몽고DB란?

 

몽고 DB 는 위키백과에 다음과 같이 설명되어 있다.

몽고DB(MongoDB←HUMONGOUS)는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. NoSQL 데이터베이스로 분류되는 몽고DB는 JSON과 같은 동적 스키마형 도큐먼트들(몽고DB는 이러한 포맷을 BSON이라 부름)을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼간다. 이로써 특정한 종류의 애플리케이션을 더 쉽고 더 빠르게 데이터 통합을 가능케 한다. 아페로 GPL 아파치 라이선스를 결합하여 공개된 몽고DB는 자유-오픈 소스 소프트웨어이다.

이러한 몽고DB를 node.js에서 사용하기 위해서는 moongoose라는 ODM을 사용해야 한다. ODM은 Object Cocument Mapping으로 문서를 DB에서 조회할 때 자바스크립트 객체로 바꿔주는 역할을 한다. 

 

mongo DB와 이전에 Express.js로 제작한 간단한 웹 애플리케이션과 연결하는 과정은 다음과 같다.

 

1. 몽고 DB 회원가입

www.mongodb.com/

 

The most popular database for modern apps

We're the creators of MongoDB, the most popular database for modern apps, and MongoDB Atlas, the global cloud database on AWS, Azure, and GCP. Easily organize, use, and enrich data — in real time, anywhere.

www.mongodb.com

Try Free를 눌러 회원가입

 

2. Cluster 생성

Free인 M0 Sandbox tier를 선택

 

 

3. 몽고 DB 유저 생성

CONNECT를 눌러 몽고DB 유저 생성 

4. MongGoose 다운로드

 

npm install mongoose --save

5. index.js 파일 추가

 

CONNECT -> URL COPY

-> index.js

const express = require('express')
const app = express()
const port = 5000
const mongoose = require('mongoose')
mongoose.connect('MongoDB URL',{
	useNewUrlParser: true, 
    useUnifiedTopology: true,
    useCreateIndex: true, 
    useFindAndModify:false
}).then(() => console.log('MongoDB Connected...')).catch(err => console.log(err))
app.get('/', (req, res) => {
  res.send('Hello World!')
})
app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

- 코드 설명

'mongodb+srv://<username>:<password>@boilerplate.16rla.mongodb.net/<dbname>?retryWrites=true&w=majority'

 

<username> : 이전에 생성한 몽고DB 유저 ID

<password> : 이전에 생성한 몽고DB 유저 비밀번호

<mongodb> : 생성한 몽고DB 이름

 

*.then(()=>console.log('MongoDB Connected...')) : 연결확인 여부를 위한 console에 띄우는 로그

 

* .catch(err => conseole.log(err)) : 연결이 되지 않은 경우에는 errlog로 띄움

 

* 에러방지를 위한 코드

useNewUrlParser: true,

useUnifiedTopology: true,

useCreateIndex: true,

useFindAndModify: false

 

 

6. 실행

 

npm run start

 

 

Express.js란?

Express.js는 Node.js의 핵심 모듈인 http와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크이다. Express를 사용하면 코드의 복잡성을 낮춰주고 웹애플리케이션 구현 과정의 공통적으로 요구되는 일을 대신 지원해주면서 보다 쉽게 애플리케이션을 구현할 수 있다.

 

Hello world 예제 구현

 

다음과 같은 과정을 통해 간단한 Express 앱을 작성할 수 있다.

 

전제조건 : Node.js 설치

* 설치확인(node.js 버전확인) : node -v 

 

1. 디렉토리 생성

 

mkdir sample
cd sample

 

2. 해당 디렉토리에서 npm init (npm 설치)

 

 npm init

 

3. 해당 디렉토리에 Express 설치

 

npm install express --save

node-modules : 라이브러리 파일 모음

 

 

4. 해당 디렉토리에 백엔드 시작점이 될 index.js 파일 작성

 

index.js

const express = require('express')
const app = express()
const port = 5000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

 

package.json

{
  "name": "practice",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
   "scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

package.json 에서 index.js를 시작스크립트로 지정

 

 

5. start 스크립트(index.js)를 시작으로 실행

 

npm run start

 

앱은 서버를 시작하며 지정한 5000번 포트에서 연결을 청취하며 라우트에 대한 요청에 Hello World! 로 응답한다.

다른 경로에 대해서는 404 Not Found 로 응답한다.

 

6.  http://localhost:5000/

 

브라우저에서 로컬호스트를 로드하여 결과물을 확인한다.

 

 

'Node.js' 카테고리의 다른 글

[Node.js] 웹 애플리케이션과 몽고 DB 연결  (0) 2020.09.17
[Node.js] node.js 개념 정리  (0) 2020.09.15

node.js란

Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 Java Script 런타임이다. 비동기 이벤트 주도 JavaScript 런타임으로써 Node.js는 확장성 있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다. Node.js는 이벤트 기반, 논 블로킹 I/O모드를 사용해 가볍고 효율적이다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이다.

 

즉 Chrome 브라우저가 JavaScript 코드를 해석하기 위해 내장하고 있는 JavaScirpt Engine인 V8 엔진을 이용하여 브라우저에서 JavaScript를 해석하듯이 JavaScript를 동작할 수 있도록 하는 환경이다.

 

Node.js 관련 핵심키워드

 

- 크롬 V8

 크롬 V8 또는 간단히 V8은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진이다. 구글 크롬 브라우저와 안드로이드 브라우저에 탑재되어 있다.

 

- 비동기 I/O처리(Non-Blocking I/O)

하나의 쓰레드가 request를 받으면 바로 다음 처리에 요청을 보내놓고 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아서 응답을 보낸다.

동시 request가 오더라도 처리가 완료될때까지 기다리지 않아도 되기 때문에 서버 부하가 적다.

 

- NPM

npm (노드 패키지 매니저/Node Package Manager)은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다. 자바스크립트 런타임 환경 Node.js의 기본 패키지 관리자이다. 명령 줄 클라이언트(npm), 그리고 공개 패키지와 지불 방식의 개인 패키지의 온라인 데이터베이스(npm 레지스트리)로 이루어져 있다.

 

+ Recent posts