2-2. Mongoose 설치 및 적용하기

Mongoose 는 MongoDB 기반 ODM (Object Data Modelling) 라이브러리입니다. 이 라이브러리는, 데이터베이스상의 문서들을 JavaScript 상의 객체로 사용 할 수 있게 해줍니다.

설치

$ yarn add mongoose
$ yarn add dotenv

dotenv 는 환경변수들을 파일에 넣고 사용 할 수 있게 해주는 개발용 모듈입니다. 우리는, mongoose 를 연결 할 때 서버에 대한 계정과 비밀번호를 입력하게되는데요, 이런 민감한 정보들은 코드상에서 직접 작성하지 않고 환경변수로 설정하는것이 좋습니다. 그리고, 만약에 프로젝트를 오픈소스로 공개를 하는 경우에는 .gitignore 을 통해서 환경변수가 들어있는 파일을 제외시키면 되지요.

.env 환경변수 파일 만들기

환경변수에서는, 우리가 서버에서 사용 할 포트, 그리고 MongoDB 주소를 넣어주겠습니다. 프로젝트의 루트 경로에 .env 파일을 생성하여 다음과 같이 입력해주세요.

.env

PORT=4000
MONGO_URI=mongodb://localhost/heurm

만약에, mongodb 를 여러분의 컴퓨터에 설치했다면 위와같이 설정을 하시면 됩니다. heurm 은 우리가 만들 데이터베이스 이름입니다. 데이터베이스는 사전에 만들어주지 않아도 자동으로 생성됩니다.

만약에 mlab 을 통하여 MongoDB 서버를 준비했을 경우에는 mlab 의 데이터베이스에 들어가서 페이지 상단에 뜨는 mongodb://<dbuser>:<dbpassword>@ds061365.mlab.com:61365/velopert 형식의 주소를 넣어주고 dbuser/dbpassword 의 위치에 만들었었던 계정정보를 넣어주면 됩니다.

그 다음엔 src/index.js 파일의 상단에 다음과 같이 dotenv 를 적용하세요.

src/index.js

require('dotenv').config(); // .env 파일에서 환경변수 불러오기

const Koa = require('koa');
const Router = require('koa-router');

const app = new Koa();
const router = new Router();
const api = require('./api');

const port = process.env.PORT || 4000; // PORT 값이 설정되어있지 않다면 4000 을 사용합니다.

router.use('/api', api.routes()); // api 라우트를 /api 경로 하위 라우트로 설정

app.use(router.routes()).use(router.allowedMethods());

app.listen(port, () => {
    console.log('heurm server is listening to port ' + port);
});

port 의 값도 설정해주었습니다.

mongoose 를 통해 데이터베이스에 연결하기

require('dotenv').config(); // .env 파일에서 환경변수 불러오기

const Koa = require('koa');
const Router = require('koa-router');

const app = new Koa();
const router = new Router();
const api = require('./api');

const mongoose = require('mongoose');

mongoose.Promise = global.Promise; // Node 의 네이티브 Promise 사용
// mongodb 연결
mongoose.connect(process.env.MONGO_URI, {
  useMongoClient: true
}).then(
    (response) => {
        console.log('Successfully connected to mongodb');
    }
).catch(e => {
    console.error(e);
});

const port = process.env.PORT || 4000; // PORT 값이 설정되어있지 않다면 4000 을 사용합니다.

router.use('/api', api.routes()); // api 라우트를 /api 경로 하위 라우트로 설정

app.use(router.routes()).use(router.allowedMethods());

app.listen(port, () => {
    console.log('heurm server is listening to port ' + port);
});

mongoose 에서 데이터베이스에 요청을 할 때, Promise 를 사용 할 수 있는데요, 이 때 어떤 Promise 를 사용할 지 정해주어야합니다. 그 이유는 Promise 도 여러종류의 구현체가 있기 때문인데요 (Node v7 이전에는 공식적인 Promise 가 없었습니다.) 우리가 사용하는 노드 버전에서는 자체적으로 Promise 를 내장하고 있기때문에, 이것을 사용 할 수 있도록, mongoose.Promise = global.Promise; 을 설정해주어야합니다.

서버를 실행하는 터미널에서 다음과 같이 프린트가 되면 정상적으로 연결이 된 것입니다.

heurm server is listening to port 4000
Successfully connected to mongodb

이제 mongoose 를 사용 할 준비가 되었습니다.

이제 데이터의 스키마 모델링 하는 방법을 배워보겠습니다!

results matching ""

    No results matching ""