상세 컨텐츠

본문 제목

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

프로그래밍/서버관련

by jin* 2017. 1. 4. 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


감사합니다.

참고자료


관련글 더보기

댓글 영역