2012-03-16 66 views
3

這裏是我在Heroku上運行的node.js文件。它在本地完美工作,但是當我將它推到Heroku時,數據庫集合不會創建,也不會引發錯誤。最終,我只是試圖在Heroku上運行時實際創建連接。謝謝。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(); 

回答

2

您致電.save()需要回調函數。嘗試在那裏加入了調試信息,看看它是否顯示爲什麼它的失敗,任何這樣的信息:

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

那麼你應該能夠看到在Heroku的日誌結果。

+0

我增加了控制檯消息,但他們都不是被稱爲在Heroku的日誌。 – 2012-03-16 19:28:18

+0

添加調試消息來確定腳本掛在哪一行代碼。最有可能的是mongoose.connect,它可能與MONGOHQ_URL有關。嘗試在本地設置環境變量並通過本地而不是從heroku連接到mongohq實例。 – mpobrien 2012-03-16 21:32:08

+0

我可以在本地連接到mongohq,一切正常。 – 2012-03-16 23:25:51

0

混亂的另一個可能的來源是,如果你是採購既MongoLab和MongoHQ,然後在Heroku的tutorial提供的默認連接字符串將打破你的數據庫會話:

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

即:如果您正在使用MongoHQ只有同時安裝,你應該扔掉process.env.MONGOLAB_URI

相關問題