herokuでmongolabを使ってみる

現在作成中の時間計測サービスで、計測した時間をデータベースに保存することが必要なので調べたところ、mongolabというherokuのアドオンが無料で使えるとのことで使ってみました。

アドオンの追加はherokuコマンドで追加できますが、herokuのダッシュボードでクレジットカードを登録していないと、下記のようなエラーが発生するので予めクレジットカードを登録しておく必要があります。
無料版を使っていれば課金されることは無いですが、登録しておくのはちょっと不安。。。

 !    Please verify your account to install this add-on plan (please enter a credit card) For more information, see https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify 

無料版のmongolabのアドオンの追加コマンドは下記です。
sandboxが無料版のようです。

heroku addons:create mongolab:sandbox

実行すると下記のような出力があれば成功です。

Creating practicing-duly-3222... done, (free)
Adding practicing-duly-3222 to 'herokuの自分のURL'... done
Setting MONGOLAB_URI and restarting 'herokuの自分のURL'... done, v6
Welcome to MongoLab.  Your new subscription is being created and will be available shortly.  Please consult the MongoLab Add-on Admin UI to check on its progress.
Use `heroku addons:docs mongolab` to view documentation.

あとはmongodbに接続するURLを取得します。
下記コマンドを実行すると、「MONGOLAB_URI」が出力されます。

heroku config
MONGOLAB_URI: mongodb://mongodbのURL(自動生成されたユーザー名とパスワード付き)

このURLを使ってmongodbに接続すればOKです。

~~~
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://mongodbのURL(自動生成されたユーザー名とパスワード付き)';
MongoClient.connect(url, function(err, db) {
	if(err) {
		callback(err);
		return;
	}
        ~~~
});
~~~

追記

たとえば、settings.jsというファイルを作成し、下記のようなコードを記述し、別のコードからこの関数を使うことで、ローカルとheroku上で別々のmongodbを使えるようになります。
mongolabのurlにはパスワードとか含まれていてgithubに上げたくないので重宝します。

// settings.js
exports.mongodbUrl = function() {
	if(process.env.MONGOLAB_URI) {
		return process.env.MONGOLAB_URI;
	} else {
		return 'mongodb://127.0.0.1:27017/idealtimetest';
	}
}