Node.js + Mongoose在本地工作,但不在Heroku上工作

时间:2012-03-16 01:18:52

标签: node.js mongodb heroku mongoose

这是我在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();

3 个答案:

答案 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