본문 바로가기
Web - 백엔드/Node.js

[Node.js] mLab을 이용한 MongoDB 연결 1

by 미래문 2019. 1. 28.
반응형

 


 

 

mLab 바로 가기
 

MongoDB Atlas Database | Multi-Cloud Database Service

The multi-cloud database service at the heart of our developer data platform that accelerates and simplifies how you build with data. Try MongoDB Atlas today!

www.mongodb.com

mLab 은 MongoDB를 무료로 서비스해주는 곳입니다. 물론, 서비스의 규모가 커진다면 그에 맞는 비용을 지불해야 하지만 저와 같은 간단한 학습용 사이트나 어플리케이션을 제작하시는 분들에게는 큰 도움이 될 것입니다. 위의 사이트에서 회원가입을 진행하시면 되겠습니다. (회원가입은 다루지 않겠습니다...)

가입하시고 로그인하면 아래와 같이 대시보드가 나타납니다

(저는 미리 만들어둔 데이터베이스가 있습니다.. 신경쓰지 않으셔도 됩니다.)

 

MongoDB Deployments에서 오른쪽상단의 Create New를 클릭합니다.

 

그러면 선택하는 창이 뜨게 되는데요, 아마존을 선택하고, 밑에서는 [ SAND BOX ] 를 선택한 후

CONTINUE를 누릅니다.

 

다음은 리전선택입니다. 선택이랄 것도 별로 없이 딱 2개 제공 됩니다. 아무래도 미국이 저는 좀 더 나을 것 같아서 미국으로 선택했습니다.

 

데이터 베이스의 이름을 입력합니다. 소문자만 입력할 수 있다는 점에 유의하면서 입력해줍니다.

저는 test_data로 하겠습니다.

 

확인을 묻는 페이지가 나옵니다. 밑에 SUBMIT ORDER 를 눌러 완료합니다.

 

test_data 가 새로 생긴 것을 확인 할 수 있습니다. test_data를 클릭합니다.

 

위와 같이 여러 정보가 뜹니다. 우리가 DB를 mLab 에서 직접적으로 사용하는 일은 테스트하거나 확인 할때 정도 밖에는 없기때문에 어플리케이션에서 접근하려면 사용자를 추가해줘야 합니다. Users탭을 클릭하여

Add database user를 통해 유저를 생성합니다.

 

저는 tester, 비밀번호는 test1234로 진행하겠습니다.

사용자를 생성 완료했다면, 페이지 위쪽 블록에 MongoDB URI를 확인합니다.

 

mongodb://<dbuser>:<dbpassword>@ds113845.mlab.com:13845/test_data

위와 같이 mongoDB 커넥터 URI를 통해 나중에 어플리케이션에서 mLab 데이터베이스에 접근합니다.

위에서 만든 tester라는 사용자로 접근하는 URI를 만드려면 다음과 같이 됩니다.

mongodb://tester:test1234@ds113845.mlab.com:13845/test_data

이제 node.js 로 넘어가서, (프로젝트 생성과정은 생략)

mongoDB를 사용하기 위한 모듈을 설치합니다.

npm install mongoose body-parser

mongoose가 바로 mongoDB와 연결을 도와주는 모듈이라고 볼 수 있겠습니다.

body-parser는 get이나 post등의 메서드에서 넘어오는 요소들을 받을 수 있도록 해주는 모듈입니다.

먼저 server.js 파일을 만들고, 다음과 같이 작성합니다.

server.js

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.json());


const db = require('./config/keys').mongoURI;

mongoose.connect(db, {
    useNewUrlParser: true
})
.then(() => console.log("몽고 DB가 연결되었습니다."))
.catch(err => console.log(err));

app.get('/', (req, res) => {
    res.send("몽고 DB 테스트");
});

app.listen(5000, (req, res) => {
    console.log("서버 실행중..");
});

여기서 express는 express 모듈에 관한 것입니다. 이번 포스트에서 express 모듈을 설치하는 것에 대해서는 언급하지 않았지만 기본 가정 하에 진행하겠습니다. 없다면 설치해주세요

mongoose와 body-parser 모듈을 require함수를 통해서 가져옵니다. 그 다음, bodyparser를

app.use(); 를 통해서 [ 미들웨어 ] 로서 동작하도록 설정해줍니다. 여기서 미들웨어란 간단히 말하자면

플러그인과 비슷한 개념이라고 볼 수 있습니다.

그리고, db라는 변수에 /config/keys.js 에 있는 mongoURI라는 변수를 가져오도록 합니다.

keys.js는 바로 다음에 작성하므로 지금은 db라는 변수가 mLab에서 가져온 MongoDB URI라고 생각하시면 됩니다.

그 다음, mongoose 모듈의 connect 함수를 통해 몽고 db에 연결합니다. then을 통해 만약 연결이 실행되고 난 뒤에, 콘솔창에 연결이 잘 되었다는 메세지를 출력시키고, 만약 연결 도중 문제가 생겼다면 catch를 통해서 에러메세지를 콘솔 창에 출력하도록 합니다.

그 다음, 최상위 폴더에 config라는 폴더를 만들고 그 안에 keys.js라는 파일을 생성합니다.

 

그리고 다음과 같이 작성합니다.

/config/keys.js

module.exports = {     mongoURI: 'mongodb://tester:test1234@ds113845.mlab.com:13845/test_data' }

module.exports를 통해서 다른 js 파일에서 require로 keys.js 파일을 가져오기만하면 {} 안에 있는

변수를 쓸 수 있도록 합니다.

저는 위에서 아이디를 tester, 비밀번호를 test1234로 정했기 때문에 위와 같이 URI가 나오는 것이고

URI와 ID, PW는 각자 다를 것입니다.

여기까지 작성했다면, 콘솔 창에서 node server.js 명령어를 입력하여 실행합니다.

node server.js

콘솔 창에는 "서버 실행중.." 이라는 메세지와 "몽고 DB가 연결되었습니다." 라는 메세지가 출력될 것입니다.

 

또한, 127.0.0.1:5000 에 접속하여 확인하면, 아직은 "몽고DB 테스트" 라는 글만 출력되는 것을 확인 할 수 있습니다.

 

여기까지 해서 몽고 DB와의 연결이 완료된 것입니다.

다음 포스트에서는 몽고DB를 통해 CRUD 작업을 해보겠습니다.

반응형

댓글