这是我在Heroku上运行的node.js文件。它在本地完美运行,但是当我将它推送到Heroku时,不会创建数据库集合,也不会抛出任何错误。最后,我只是想让它在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();
答案 0 :(得分:6)
您是否在heroku中指定了节点版本?
请参考这个。 (我也混淆了同样的问题。但已经解决了。) http://devcenter.heroku.com/articles/nodejs-versions
答案 1 :(得分:2)
您对.save()
的通话需要回拨功能。尝试在那里添加调试消息,看看它是否显示有关失败原因的任何信息,如下所示:
Msg.save(function(err){
if(err){
console.log("Error:", err);
}else{
console.log("success");
}
})
然后你应该能够在heroku日志中看到结果。
答案 2 :(得分:0)
另一个可能的混淆源是如果您同时采购MongoLab和MongoHQ,那么Heroku tutorial中提供的默认连接字符串将破坏您的数据库会话:
var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/mydb';
即:如果您只安装了MongoHQ,那么您应该丢掉process.env.MONGOLAB_URI