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 를 사용 할 준비가 되었습니다.
이제 데이터의 스키마 모델링 하는 방법을 배워보겠습니다!