상세 컨텐츠

본문 제목

[개발] Node.js + Express + Realm 으로 API서버 만들기

프로그래밍/서버관련

by 진:D 2017.01.04 22:11

본문

모바일에서 이미 유명해져버린 모바일 데이터베이스 Realm (렘이라 읽는다) 이제는 모바일 뿐만 아니라 서버의 영역까지 확장하고 있는 듯 합니다. 그 중에서 흥미로운 것을 발견했습니다. 기존 Node.js로 서버를 개발한다고 하면 당연스럽게 MongoDB 먼저 생각했었는데, 그 영역의 일부를 Realm이 파고들어오게 되었습니다. 

관련자료들을 찾아보니, Node.js를 위해서 Realm을 만들었다기보다는 javascript용의 Realm으로 React-Native를 위해서 나온 것이 Node.js서버쪽에서도 일부 활용가능해진 것으로 보입니다. (제 추측입니다)




그래서 저는 얼마나 쉬울까?라는 궁금증을 가지고 일단 간단한 예제를 만들어보기로 했습니다.

Node.js는 당연히 설치되어 있어야 하며, 간단한 API서버를 만들기 위해서 Express의 도움을 살짝 받도록 하겠습니다.

처음에 예제를 만들고나서 서버실행하다가 realm쪽에서 계속 죽길래, 뭔가 문제가 있나해서 자료를 찾아봤는데, Node.js 버전이 v4.5.0이상에서만 동작한다고 하니, 이 점 참고하셔서 진행하시면 될 것 같습니다

// 버전확인방법
// 콘솔창에서
$ node -v
v7.3.0

Node.js 설치가 완료되었으면 exress를 활용하여 간단한 API를 응답해줄 수 있는 코드를 작성합니다.
express-generator를 이용하면 쉽게 프로젝트를 만들 수 있습니다.

// express-generator 설치
$ sudo npm install -g express-generator

// 프로젝트 폴더 생성 및 폴더 접근
$ mkdir nodejs-with-realm && cd nodejs-with-realm

// express로 시작하기 (view타입은 ejs로 하겠습니다)
~nodejs-with-realm$ express-generator -e

// 관련모듈들 설치
~nodejs-with-realm$ npm i

일단 위와 같이 진행하시면 간단한 API프로젝트가 완성되었습니다. 실행할 때는 npm run start or node ./bin/www로 실행하면 http://localhost:3000을 통해 API서버를 접속하실 수 있습니다.

그런다음 정말 간단하게 Realm을 이용해서 API를 만들기만 하면 됩니다.

// realm 모듈 추가
~nodejs-with-realm$ npm i --save realm

블로그에서는 사용자추가, 사용자전체불러오기, 사용자1명만 불러오기 이렇게 예를 들어 어떤식으로 코드를 작성하는지 알려드리도록 하겠습니다.

Realm 불러오기



스키마(모델) 정의하기



UserSchema에 있는 name : 'User'는 스키마명이고, 각 컬럼/키값은 properties안에서 키와 타입을 지정해주면 됩니다.
new Realm()에서 path에 예제와 같은 형식으로 경로를 작성해주시고 schema에는 미리 작성했던 스키마를 배열형식으로 작성합니다.
이 것으로 User의 데이터를 주고 받을 준비는 완료되었습니다.

Realm스키마를 만든 것을 util로 따로 빠져나왔다는 가정하에 진행하겠습니다.



사용자 추가하기



POST로 들어올 것이라고 예상하여 작성하도록 하겠습니다.

사용자목록 불러오기



localhost:3000/ : 결과

{"success":true,"data":{"0":{"name":"hello","email":"hello@world.good","tel":"02.000.0000","date":"2017-01-04T12:08:47.266Z"},"1":{"name":"jin","email":"me@puding.kr","tel":"010.000.0000","date":"2017-01-04T12:08:10.116Z"}}}

단일사용자 불러오기



localhost:3000/jin : 결과

{"success":true,"data":{"0":{"name":"jin","email":"me@puding.kr","tel":"010.000.0000","date":"2017-01-04T12:08:10.116Z"}}}


realm을 통해 저장되면 프로젝트폴더 내부에 위와 같이 저장됩니다.

(아마 설정을 통해 저장되는 경로도 설정 가능하겠죠?)


사용해본결과 정말 간단하게 데이터를 저장하고 가져올 수 있었습니다. 다만 DB대체로는 뭔가 아쉬운 부분이 있는 것 같았습니다. 엄청 큰 서비스보다는 node.js의 영역이 하나의 플랫폼이라고 가정하여 간단하게 데이터저장용으로만 사용한다면 훌륭한 라이브러리(?)라고 할 수 있는 것 같습니다.

위에서 진행했던 코드의 프로젝트는 GitHub에 공개해놓았습니다. 혹시 필요하신 분들은 언제든지 가져다 사용하셔도 좋습니다 : )


GitHub Linkhttps://github.com/devjin0617/nodejs-with-realm


감사합니다.

참고자료


관련글 더보기

댓글 영역

  • 프로필 사진
    2017.01.23 21:01
    비밀댓글입니다
    • 프로필 사진
      2017.01.23 21:06 신고
      위의 예제는 API예제이기때문에 단순 브라우저로 모든 테스트를 하기에는 무리가 있을 수 있습니다. (브라우저 주소창에서는 GET요청만 가능합니다.)
      사용자 추가하기 부분은 POST요청으로 진행되어야 하기 때문에 POSTMAN같은 외부 API요청테스트 서비스를 이용하셔서 진행하셔야 할겁니다.
  • 프로필 사진
    2017.07.20 06:23
    Realm에서 self reference를 하려면 어떻게 하나요? 예를 들어 comment schema 하에서 comments list를 만들고 싶은데 이 경우에는 신택스가 어떻게 되죠?
    • 프로필 사진
      2017.08.14 18:24 신고
      안녕하세요.
      제가 질문을 잘 이해 못해서 그런데 예제코드같은거와 함께 설명 해주실 수 있을까요?
  • 프로필 사진
    2018.10.09 11:40
    안녕하세요 맨파워코리아 헤드헌팅 본부 김인수입니다.
    혹시 주변에 nodeJS 사용경력 5년이상이고 나이는 80년생이하신분 추천해 주실만한 사람은 없는지요?
    포지션은 백엔드개발(Nodejs)이며 블록체인 최고 회사입니다.
    연봉은 1억~2억 가능하시고 연봉 및 처우조건은 아주 좋습니다.
    답변 부탁 드립니다. 감사합니다. (연락처 : 김인수, tedd.kim@manpower.co.kr)