loopbackでMongoDBを利用する
loopbackでアプリケーションを作成した直後はデータストレージにmemoryが設定されているため、そのままだとアプリケーションが再起動するたびにmodelの内容が初期化されてしまうため、保管できる様にMongoDB*1を利用できる様にします。
作成したアプリケーションルートでnpmコマンドを叩きます。
$ npm install loopback-connector-mongodb --save
MongoDBに接続するためのコネクタがpackage.jsonに追加されて必要なnpmモジュールがインストールされたのを確認した後、server/datasource.json
にある
データベースへの接続設定を更新します。
{ "db": { "name": "db", "connector": "mongodb", "host": "127.0.0.1", "database": "hogehoge_development", "username": "", "password": "", "port": 27017 } }
必要な設定はこれだけになります。
先日作成したユーザ登録のAPIを呼び出してみます。
☁ http POST http://0.0.0.0:3000/api/users password=hogehoge email=hideack@remp.jp HTTP/1.1 200 OK Access-Control-Allow-Credentials: true Connection: keep-alive Content-Length: 59 Content-Type: application/json; charset=utf-8 Date: Mon, 04 May 2015 06:30:46 GMT ETag: W/"3b-84c0720e" Vary: Origin, Accept-Encoding X-Powered-By: Express { "email": "hideack@remp.jp", "id": "554712159967a7b3efce0f0c" }
MongoDBで永続化されているかを確認してみます。
素朴に mongo
コマンドでMongoDBに接続して確認します。
> show collections User system.indexes > db.User.find() { "_id" : ObjectId("554712159967a7b3efce0f0c"), "password" : "$2a$10$AzdK8q7nUIHxcoiW5y17Lusb4eag7VOjwQI.e5ukjJRWKMWXSaP6a", "email" : "hideack@remp.jp" } >
loopbackで作成したアプリケーションで操作されたmodelの内容がMongoDBで永続化される様になりました。
併せて読みたい
過去のloopbackに関する記事
*1:REMPもSTOBOもストレージはMongoDBです