Node.js를 처음 사용하는 경우 Couchbase 또는 두 가지 모두에 해당한다면 실력을 레벨업할 수 있습니다.
오늘은 Node.js와 Express를 사용하여 Couchbase에서 문서를 검색하기 위한 최소한의 REST 기반 애플리케이션을 구축하는 방법을 보여드리겠습니다.
이 게시물은 다음에 대한 소개 시리즈를 이어갑니다. 카우치베이스와 함께 Node.js 사용 (포함 지난주 비동기 함수에 대한 포스팅을 참고하세요.).
오늘 포스팅에서는 이전 예제인 Node.js와 카우치베이스에 대해 설명했으니 아직 읽지 않으셨다면 앞의 두 글을 확인해 보세요. 또한 JavaScript, Node.js 및 NoSQL 문서 데이터베이스에 기본적으로 익숙하다고 가정하겠습니다.
Express 모듈 받기
지난주에 이어서 웹 기반 REST 인터페이스를 추가하여 웹 애플리케이션을 데이터베이스에서 격리할 수 있습니다. 이렇게 하려면 Express 모듈이 필요합니다. 이 모듈을 설치하고 다음을 사용하여 패키지 종속성에 추가하세요:
1 |
npm 설치 express --저장 |
Express가 올바르게 설치되었는지 테스트하려면 작은 애플리케이션을 빌드하면 됩니다(app.js
)를 호출하면 HTTP 서버를 생성하고 헬로 월드
값으로 설정합니다. 나중에 편리하게 사용할 수 있도록 비동기
함수를 사용할 수 있습니다:
1 2 3 4 5 6 7 8 9 |
var 앱 = require('express')(); const 카우치베이스 = require("couchbase"); 비동기 함수 메인(){ 앱.get('/', (req, res) => res.보내기('안녕 세상!')); 앱.듣기(3000, () => 콘솔.로그('포트 3000에서 수신 중')); } 메인(); |
이를 실행하고 포트 3000에서 웹 브라우저를 통해 액세스합니다. 아래 이미지와 같이 표시될 것입니다:
1 |
노드 앱.js |
축하합니다! 작은 앱이긴 하지만 첫 번째 Express 앱을 성공적으로 구축하셨습니다.
애플리케이션 구축
애플리케이션에는 세 가지 구성 요소가 있습니다:
-
- 경로 관리
- 데이터베이스 연결
- HTTP 서버 계층
데이터 검색을 위한 빠른 경로 추가
애플리케이션이 루트 경로를 가로채서 제공합니다. /
. 라는 경로를 생성합니다. get
를 사용하여 특정 문서를 검색할 수 있습니다. REST 사용자는 문서 ID를 제공하고 다음을 반환합니다. JSON 문서 다음 구문을 사용합니다:
1 |
localhost:3000/get/[documentID] |
해당 경로를 생성하는 함수에는 두 가지 중요한 개체가 포함되어 있습니다. req
(요청) 및 res
(결과) - 앱과 데이터를 주고받는 데 사용할 것입니다. 아래 예시를 참조하세요:
1 2 3 4 5 6 7 |
앱.get('/get/:docid', runAsync(비동기 (req, res) => { var docid = req.매개변수.docid; var docjson = 기다림 getDoc(docid, 함수(err, 결과){ res.json(결과.콘텐츠) }); })); |
참고 :docid
매개변수는 요청 객체를 통해 액세스할 수 있는 변수가 됩니다: var docid = req.params.docid
. 그런 다음 getDoc()
함수에 대한 자세한 내용은 잠시 후에 다룰 예정입니다.
이 애플리케이션에는 모든 것을 비동기식으로 실행할 수 있는 아래의 편의 기능도 있습니다:
1 2 3 4 5 6 |
함수 runAsync (콜백) { 반환 함수 (req, res, 다음) { 콜백(req, res, 다음) .catch(다음) } } |
위의 함수는 호출을 멋지게 래핑하지만 여기서는 자세히 설명하지 않겠습니다(다음 글에서 설명할 수 있습니다). 지금은 스크립트에 추가하기만 하면 됩니다.
문서 검색 기능 추가
스크립트의 데이터베이스 연결은 이 시리즈의 이전 게시물과 마찬가지로 기본입니다. 스크립트에서 버킷 및 컬렉션을 클릭한 다음 get()
함수를 사용하여 주어진 문서 ID를 기준으로 문서를 검색할 수 있습니다.
먼저 연결 부분이 있습니다. 다른 사용자 아이디, 비밀번호, 버킷 또는 컬렉션이 있는 경우 여기에서 이를 대체하세요:
1 2 3 4 5 6 7 |
var 클러스터 = new 카우치베이스.클러스터("couchbase://localhost", { 사용자 이름: "관리자", 비밀번호: "관리자" }); var 버킷 = 클러스터.버킷("travel-sample"); var 컬렉션 = 버킷.기본 컬렉션(); |
저는 데이터베이스도 호스팅하는 네트워크의 서버에서 앱을 호스팅합니다(localhost
). 하지만 저는 개발용 노트북에서 앱에 액세스하므로 아래 웹 브라우저 샘플에서 IP 주소를 볼 수 있습니다. 192.168.0.158
REST API를 누르면 됩니다.
이제 문서 검색의 주요 기능을 살펴보겠습니다:
1 2 3 4 5 |
var getDoc = 비동기 (키) => { var 결과 = 기다림 컬렉션.get(키); 콘솔.로그(결과) 반환 결과 }; |
저희는 컬렉션
변수, 즉 앞서 정의한 버킷 등에 대한 카우치베이스 데이터베이스 연결입니다. 그리고 get()
함수는 문서 ID가 포함된 문자열을 입력으로 받습니다. 예를 들어 hotel_5336
이 시리즈의 이전 게시물에서
REST API 실행
REST API용 HTTP 서버도 여전히 실행해야 합니다. 이 게시물의 첫 번째 테스트 앱 이후 변경된 사항은 없습니다:
1 |
앱.듣기(3000, () => 콘솔.로그('포트 3000에서 수신 중')); |
모든 코드에 대한 전체 목록은 아래에 포함되어 있습니다. 이제 이전처럼 서버를 실행할 수 있습니다( 노드 app.js
)를 클릭하고 웹 브라우저를 통해 문서 ID를 제공합니다, http://192.168.0.158:3000/get/hotel_5336
.
요청된 문서가 콘솔에서 인쇄되어 브라우저로 반환됩니다:
전체 코드 샘플
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
var 앱 = require('express')(); var 카우치베이스 = require("couchbase"); 비동기 함수 메인(){ 앱.get('/get/:docid', runAsync(비동기 (req, res) => { var docid = req.매개변수.docid; var docjson = 기다림 getDoc(docid, 함수(err, 결과){ res.json(결과.콘텐츠) }); res.json(docjson.콘텐츠); })); 앱.듣기(3000, () => 콘솔.로그('포트 3000에서 수신 중')); 함수 runAsync (콜백) { 반환 함수 (req, res, 다음) { 콜백(req, res, 다음) .catch(다음) } } var 클러스터 = new 카우치베이스.클러스터("couchbase://localhost", { 사용자 이름: "관리자", 비밀번호: "관리자" }); var 버킷 = 클러스터.버킷("travel-sample"); var 컬렉션 = 버킷.기본 컬렉션(); var getDoc = 비동기 (키) => { var 결과 = 기다림 컬렉션.get(키); 콘솔.로그(결과) 반환 결과 }; } 메인(); |
결론
다음 글에서는 다양한 Express 경로를 사용하여 데이터베이스 쿼리를 작성하고, 전체 텍스트 검색을 수행하는 방법 등을 다룰 예정입니다.
그 동안 다음 중 몇 가지를 수행하여 애플리케이션을 한 단계 업그레이드하세요:
-
- 오류 캡처를 추가합니다.
- JSON 웹 토큰 또는 JWT와 같은 인증 시스템을 만듭니다( 이 여행 샘플 데모 프로젝트).
- 다음 내용을 읽어보세요. 기타 카우치베이스 Node.js SDK 함수 앱에 추가할 수 있습니다.
나머지 Node.js + Couchbase 방법 시리즈도 확인해 보세요:
Couchbase 다운로드 및 구축 시작하기
[...] 포스트 Node.js, Express 및 Couchbase로 REST 기반 애플리케이션 빌드하기 첫 번째 등장 Couchbase [...]