Heroku の Node.js アプリで MongoDB を使用する方法

Heroku で Node.js のアプリケーションを作る際にデータベースを使用する際に MongoDB を使用する事が多いので。 http://gihyo.jp/dev/serial/01/nodejs/0005 を参考にやってみた。

MongoDB をインストールしてないようならbrewでインストール

brew install mongodb

これで

mongod --nojournal --noprealloc --dbpath <データディレクトリパス>

のようにディレクトリを指定するとmongoサーバが動き出す。 そしてjsで使えるようにnpmでMongoose のインストール

npm install mongoose --save

https://devcenter.heroku.com/articles/mongolab を参考に

 heroku addons:add mongolab

とするとそれでもう Heroku で MongoDB が使える。 以下のようにjsを書いて MongoDB が正しく使えるか確かめてみる。 1行目は mongolab のURLが取れなかったら localhost のsample を使うというコードである。こうすることによりローカル環境と Heroku の環境で同じコードで動かす事ができる。

var MONGO_URL = process.env.MONGOLAB_URI || 'mongodb://localhost/sample';
var mongoose = require('mongoose');
var db = mongoose.connect(MONGO_URL);

function validator(v) {
    return v.length > 0;
}

var Category = new mongoose.Schema({
    id      : { type: Number, index: {unique: true, dropDups: true }},
    name    : { type: String, validate: [validator, "Empty Error"] },
});

var category = new Category({
    id: 1,
    name: ほげ
});
category.save();

みたいにすると categorys に insert される。