Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9047

Node.js + Hapi + Couchbase ~ Node.js + NoSQL(Couchbase) アプリ開発 ステップバイステップガイド (3)

$
0
0

はじめに

本シリーズの前回の記事では、WEBアプリケーション・フレームワークとして、Expressを用いました。
今回は、Hapiを使った例を紹介します。

利用バージョン

  • Couchbase Server: 6.6
  • Node.js: 15.4.0
  • Node.js モジュール
    • couchbase: 3.1.1
    • hapi: 18.1.0
    • uuid: 8.3.2

実装

Couchbase Server

以下、前提事項を記します。

バケット

利用するバケット(MyFirstBucket)が存在している

インデックス

検索で利用する項目に対して、インデックスが作成されている。

CREATEINDEXdef_index_typeONMyFirstBucket(type)

ユーザー

利用するバケットに対するアクセス権のあるユーザー(Administrator)を利用する。

Node.js

ライブラリインストール

npm install couchbase hapi uuid --save

ソースコード

app.js
constHapi=require("hapi");constCouchbase=require("couchbase");constUUID=require("uuid");constserver=Hapi.Server({"host":"localhost","port":3000,routes:{cors:{origin:['*']}}});varcluster=newCouchbase.Cluster('couchbase://localhost',{username:'Administrator',password:'password'});constbucket=cluster.bucket("MyFirstBucket");constcollection=bucket.defaultCollection();consttypeName="user";conststatement="SELECT `"+bucket._name+"`.* FROM `"+bucket._name+"` WHERE type = '"+typeName+"'";constselectUsers=async(key)=>{constresult=awaitcluster.query(statement);returnresult.rows;}constupsertUser=async(doc)=>{try{constkey=UUID.v4();constresult=awaitcollection.upsert(key,doc);}catch(error){console.error(error);}};constinit=async()=>{awaitserver.start(error=>{if(error){throwerror;}});returnserver;};init().then(server=>{console.log('Server running at:',server.info.uri);}).catch(err=>{console.log(err);});server.route({method:"GET",path:"/users",handler:async(request,h)=>{constrows=awaitselectUsers();returnh.response(rows);}});server.route({method:"POST",path:"/user",handler:async(request,h)=>{try{request.payload["type"]=typeName;constresult=awaitcollection.upsert(UUID.v4(),request.payload);returnh.response(request.payload);}catch(error){console.error(error);returnh.response("").code(500);}}});

実行確認

サーバー起動

$node app.js

アクセス結果

image.png

最後に

次のステップとして、Veu.jsを用いたフロントエンド・アプリケーションとの連携を予定しています。

参考情報

Hapiは、バージョン17で、APIの大きな変更が行われています。新しいAPIについて、下記の記事を参考にしました(この記事では、データベースとしてMongoDBが使われています)。
Developing RESTful APIs with Hapi

Couchbase SDKも、メジャーアップデートにより、APIが大きく変更されています。
過去に発表された下記の二つの連続した記事では、古いバージョンが用いられていますが、基本構成の参考にしています。

Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL

Going Full Stack with Node.js, Vue.js, and Couchbase NoSQL


Viewing all articles
Browse latest Browse all 9047