[MBaaS][heroku] StrongLoopのloopbackをMongoDBで動かす

By |10月 8, 2014|heroku, MBaaS, Node.js, |


ネタがないので前回の続きです><

前回の最後でデータの永続化にはDBと接続しましょう、という感じで終わりましたが、今回は具体的にloopbackのストレージにMongoDBを利用してみます。

早速、Herokuで使うのでMongoLabのアドオンを追加して接続URIを確認します。

[html]
$ heroku addons:add mongolab
$ heroku config
=== loopback-sample Config Vars
MONGOLAB_URI: mongodb://heroku_appxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxx@xx000000.mongolab.com:43200/heroku_appxxxxxxxx
[/html]

あとは server/datasources.json を以下のように変更します。

[html]
{
"db": {
"name": "db",
"defaultForType": "mongodb",
"connector": "loopback-connector-mongodb",
"url": "mongodb://heroku_appxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxx@xx000000.mongolab.com:43200/heroku_appxxxxxxxx"
}
}
[/html]

接続URIには環境変数を入れておきたいところですが解らなかったのでとりあえず直書き>< これでMongoDBをストレージとしてデータが永続化されました、と、これだけでは寂しいので少しハマった client ディレクトリを使ってクライアントWebアプリケーションを同封する方法をオマケに。 単純に以下のように server/server.js を変更すれば表示されるかな、と思ったんですが... [html] // 21, 22行目をコメントアウト var path = require('path'); app.use(loopback.static(path.resolve(__dirname, '../client'))); [/html] まだデフォルトのLadyコメントが表示されます。 これは server/boot/root.js を以下に変更することで client/index.html が表示されるようになります。 [html] module.exports = function(server) { var router = server.loopback.Router(); router.get('/', function(req, res) { res.render('index'); }); server.use(router); }; [/html] 若しくは server/boot/root.js を削除しちゃっても動きます(今のとこ支障なし)