2012-03-16 13 views
3

ここで私はHerokuで動作しているnode.jsファイルです。ローカルでは完全に動作しますが、Herokuにプッシュすると、データベースコレクションは作成されず、エラーもスローされません。最終的には、それがHeroku上で実行されている間に実際に接続を作成するようにしようとしています。ありがとう。 .save()Node.js + Mongooseはローカルでは動作しますが、Herokuでは動作しません

var mongoose = require('mongoose'), 
    db_url = process.env.MONGOHQ_URL || "mongodb://john:<mypasswordwashere>@staff.mongohq.com:10053/app3305538", 
    db = mongoose.connect(db_url), 
    Schema = mongoose.Schema; 

//Mongoose DB Test 
var MsgSchema = new Schema({ 
    date: {type: Date, default: Date.now}, 
    message: String 
}); 
var MsgModel = db.model("messages", MsgSchema); 
var Msg = new MsgModel(); 
Msg.message = "blurgh"; 
Msg.save(); 

答えて

6

herokuでノードのバージョンを指定しましたか?

こちらをご覧ください。あなたはMongoLabとMongoHQの両方を調達している場合(。。私も同じ問題を混同が、解決) http://devcenter.heroku.com/articles/nodejs-versions

+1

それは、ありがとう、それをしました。 –

2

あなたのコールは、コールバック関数をとります。そこにデバッグメッセージを追加してみてください、それはこのようなその失敗、理由についての情報を示している場合を参照してください。

Msg.save(function(err){ 
    if(err){ 
    console.log("Error:", err); 
    }else{ 
    console.log("success"); 
    } 
}) 

が次にあなたがHerokuのログに結果を見ることができるはずですが。

+0

を捨てなければならない私は、コンソールメッセージを追加しましたが、それらのいずれもHerokuのログに呼ばれています。 –

+0

デバッグメッセージを追加して、スクリプトがハングしているコード行を特定します。おそらくそれはmongoose.connectであり、おそらくMONGOHQ_URLと関係があるでしょう。環境変数をローカルに設定し、herokuからではなくmongooseを使ってmongohqインスタンスにローカルで接続してみてください。 – mpobrien

+0

私はmongohqにローカルで接続でき、すべて正常に動作します。 –

0

混乱の別の可能なソースがあり、その後、Herokuのtutorialで提供されるデフォルトの接続文字列は、あなたのDBセッションを中断します:

var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/mydb'; 

すなわち:あなたが唯一のインストールの両方でMongoHQを使用している場合、あなたはprocess.env.MONGOLAB_URI

関連する問題