2012-03-16 67 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

相关问题