2015년 3월 18일 수요일

Hapi.js + MongoDB (on Windows)

Hapi.js와 MongoDB를 붙여서 사용하는 예제가 없거나, 제대로 실행이 되지 않는 경우가 많고, 특히 Windows에 대한 내용은 극히 적어 그 방법을 정리해 본다.
아래의 예제는 schema가 없거나 훨씬 자유로운 경우이며, 좀더 schema를 갖추어 MongoDB와 연동하는 경우는 Mongoose를 사용한다.
Mongoose는 다음에 다시한번 다루어보자.


1. OS가 32bit인지 64bit인지 확인

1) 아래의 방법으로 command prompt를 실행시킨다.

  • Win7: Windows key + 'R'을 누르고 'cmd'를 입력한 후 Control+Shift+enter key를 눌러 실행
  • Win8: Windows key + 'X'를 누른 후 'A' 키 입력 


2)command prompt를 열어 아래 명령을 입력하여 32bit인지 64bit인지 확인한다.

> wmic os get osarchitecture


2. Windows 버전 MongoDB 설치

MongoDB download site에서 적합한 version의 MongoDB 설치 파일을 다운받는다. 32bit의 경우 최신 버전에서 지원안할 경우, 이전 버전(Previous Release)을 설치한다.


3. MongoDB를 Windows 서비스로 등록

1) 아래의 방법으로 command prompt를 관리자 모드로 실행시킨다.

  • Win7: Windows key + 'R'을 누르고 'cmd'를 입력한 후 Control+Shift+enter key를 눌러 실행
  • Win8: Windows key + 'X'를 누른 후 'A' 키 입력 

2) 관리자 모드로 MongoDB data와 log를 저장할 folder를 만든다. 여기서 folder위치는 D:\data라 가정하자.

> mkdir D:\data\db
> mkdir D:\data\log


3) MongoDB configuration file을 만든다. 아래와 같이 command prompt에 입력한다. 이때 mongoDB가 설치된 위치를 C:\Program Files\MongoDB Standard라고 가정한다.

>echo logpath=D:\data\log\mongod.log> "C:\Program Files\MongoDB Standard\mongod.cfg"
>echo dbpath=D:\data\db>> "C:\Program Files\MongoDB Standard\mongod.cfg"


4) Windows 서비스로 등록한다. 여기서 주의할 것은 =와 그 뒤의 값(" ") 사이에 여백 한칸이 반드시 필요하다는 것이다.

>sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB Standard\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB Standard\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

위의 과정을 모두 마치면 아래와 같은 메시지가 command prompt에 나타난다.

[SC] CreateService 성공


5) 아래 명령을 통해 MongoDB(서비스 이름)가 시작하도록 해보자.

>net start MongoDB


참고로, 서비스를 제거하는 것은 아래 명령을 사용하면 된다.

>sc.exe delete MongoDB


6) 폴더를 하나 만들고, 간단한 node.js 코드를 구현해 MongoDB에 연결을 해보자.

아래와 같이 mongodb 모듈을 설치한다.
>npm install --save-dev mongodb

아래 코드를 index.js 파일에 구현한 후 'node index'로 실행시킨다.



MongoDB에 연결되면 'We are connected'라는 메시지를 볼 수 있다.



지금부터는 MongoDB와 hapi.js를 이해하기 위한 sample 예제이다.

4. 사용할 database와 collection 만들기 

db명을 'taskdb'이고 collection명을 'tasks'라고 가정한다.

1) mongo.exe를 실행한다.

>cd C:\Program Files\MongoDB Standard\bin
>mongo.exe

2) 사용할 database를 생성한다.

mongodb prompt>use taskdb

3) collection을 만들며, 값을 추가한다.

mongodb prompt>var i = {task : "send an email to my boss", description : "CC colleagues"}
mongodb prompt>var j = {task : "submit the paper", description : "Hurry!"}
mongodb prompt>var k = {task : "attend the daily meeting", description : "Room 3"}
mongodb prompt>db.tasks.insert(i);
mongodb prompt>db.tasks.insert(j);
mongodb prompt>db.tasks.insert(k);

다음 명령을 통해 collection이 잘 생성되고 값이 잘 추가되었는지 확인한다.

mongodb prompt>show collections
mongodb prompt>db.tasks.find()


5. sample Hapi.js + mongoDB 코드 

1) 빈 folder를 만들고 hapi project를 만든다.

>npm init
>npm install --save-dev hapi boom joi hapi-mongodb


2) 아래 예제 코드를 이용해 index.js를 구현한다.




6. 테스트

command prompt를 이용해 잘 동작하는지 확인한다.

>curl http://localhost:8080/tasks"
>curl http://localhost:8080/task/xxxxxxx
>curl -X POST -H "Content-Type: application/json" -d "{\"task\":\"Fix bug 1\", \"description\":\"Absolute\"}" -i http://localhost:8080/tasks
>curl -X DELETE http://localhost:8080/tasks/xxxxxxx -i

위에서 POST 명령의 경우 Linux에서는 아래와 같이 실행한다.
>curl -X POST -H "Content-Type: application/json" -d '{"task":"Fix bug 1", "description":"Absolute"}' -i http://localhost:8080/tasks



TL;DR

Hapi와 MongoDB를 windows에서 한번 돌려보자. 앞으로 hapi.js를 공부하기 위한 기본 틀 역할을 한다.





<참조>
1. BUILDING A REST API USING HAPI.JS AND MONGODB
2. hapi-mongodb: A simple Hapi MongoDB connection plugin
3. Getting started with MongoDB and node.js on Windows
4. Install MongoDB on Windows
5. Getting Started with MongoDB

댓글 없음: