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'; } }