이 게시물에는 코드작성이 포함되어 있습니다. 소스코드를 받으신 후 진행해 주세요. MEAN Stack/개발 환경 구축에서 설명된 프로그램들(git, npm, atom editor)이 있어야 아래의 명령어들을 실행할 수 있습니다.
- Github에서 소스코드 보기: https://github.com/a-mean-blogger/contact-book/tree/155e74baf7eba0401848c71976cbbf3b92682e99
이번 포스팅에서는 주소록 실습을 위해 새 프로젝트를 생성하고 mongoose로 DB를 연결합니다. Mongoose는 mongoDB와 node.js의 오브젝트를 연결해 주는 ORM library입니다.
이번 강의를 진행하기 전에 이전 강의(mlab.com가입 및 온라인 Mongo DB 생성)에서 생성한 DB connection string을 환경변수에 "MONGO_DB"라는 이름으로 저장해 주세요.
.gitignore, README.md는 강의 내용과 직접적인 연관이 없고, package.json, package-lock.json은 자동으로 생성되는 파일이므로 이번강의에서는 index.js 신경쓰시면 됩니다.
프로젝트 폴더를 만들고 npm init
으로 package.json을 생성해 줍니다.
다음 명령어를 입력하여 atom 에디터를 실행해 줍니다.
$ atom .
아래 명령어를 사용하여 ejs, express, mongoose 세개의 package를 한번에 설치해 줍시다.
$ npm install --save ejs express mongoose
// index.js var express = require('express'); var mongoose = require('mongoose'); var app = express(); // DB setting mongoose.connect(process.env.MONGO_DB); // 1 var db = mongoose.connection; //2 //3 db.once('open', function(){ console.log('DB connected'); }); //4 db.on('error', function(err){ console.log('DB ERROR : ', err); }); // Other settings app.set('view engine', 'ejs'); app.use(express.static(__dirname+'/public')); // Port setting var port = 3000; app.listen(port, function(){ console.log('server on! http://localhost:'+port); });
나머지는 Hello World!강의에서 설명된 내용이고, DB setting 부분만 살펴보겠습니다.
1. node.js에서 기본으로 제공되는 process.env
오브젝트는 환경변수들을 가지고 있는 객체입니다. 저는 DB connection string을 "MONGO_DB"라는 이름의 환경변수에 저장하였기 때문에 node.js코드상에서 process.env.MONGO_DB
로 해당 값을 불러올 수 있습니다.
mongoose.connect('CONNECTION_STRING')
함수를 사용해서 DB를 연결할 수 있습니다.
2. mongoose의 db object를 가져와 db변수에 넣는 과정입니다. 이 db변수에는 DB와 관련된 이벤트 리스너 함수들이 있습니다.
3. db가 성공적으로 연결된 경우 "DB connected"를 출력합니다.
4. db연결중 에러가 있는 경우 "DB ERROR : " 와 에러를 출력합니다.
DB연결은 앱이 실행되면 단 한번만 일어나는 이벤트 입니다. 그러므로 db.once('이벤트_이름',콜백_함수)
함수를 사용했고, error는 DB접속시 뿐만 아니라, 다양한 경우에 발생할 수 있기 때문에 db.on('이벤트_이름',콜백_함수)
함수를 사용합니다.
이번부터는 node index.js
명령어 대신 nodemon을 사용해 서버를 실행하는 법을 익혀 봅시다. nodemon으로 서버를 실행하면 서버 코드 변경시 자동으로 서버를 재시작해주어 변경된 코드가 바로 적용될 수 있게 해줍니다. nodemon을 사용하지 않으면 서버 코드를 바꿀 때마다 수동으로 서버를 재시작해 줘야합니다.
아래 명령어로 nodemon을 설치해 주세요. nodemon은 프로젝트 자체와 상관이 없고 컴퓨터에 직접 설치되는 것으로 --global
옵션을 사용해서 설치합니다.
$ npm install --global nodemon
설치가 완료되면 package.json이 있는 위치에서 nodemon
명령어로 서버를 실행할 수 있습니다.
$ nodemon
아직 route을 생성하지 않았으므로 http://localhost:3000 으로 접속해도 아무 내용이 뜨지 않지만 console에 DB가 정상적으로 접속이 된 것을 알 수 있습니다.
만일 에러가 있다면
$ printenv
를 입력해서 DB connection string이 환경변수에 제대로 설정되어 있는지, DB connection string이 정확한지를 확인해 주세요.
이제 DB가 연결되었으니 활용을 해야겠죠?
다음강좌는 DB활용에 대한 기본적인 이론을 알아보고 실습을 하겠습니다.
댓글
이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기