使用MongoLab在Heroku上部署Node.js应用程序时出现问题
我正在尝试向Heroku部署一个非常简单的应用程序。该应用程序的代码可以在Ray Wenderlich的网站上找到,在这里:每当我试图让Heroku编译代码时,都会遇到相同的错误使用MongoLab在Heroku上部署Node.js应用程序时出现问题,node.js,mongodb,heroku,express,mlab,Node.js,Mongodb,Heroku,Express,Mlab,我正在尝试向Heroku部署一个非常简单的应用程序。该应用程序的代码可以在Ray Wenderlich的网站上找到,在这里:每当我试图让Heroku编译代码时,都会遇到相同的错误 var mongoHost = "mongodb://username:password@ds041140.mongolab.com:41140/heroku_app23491233"; var mongoPort = 41140; var collectionDriver; var mongoClient = n
var mongoHost = "mongodb://username:password@ds041140.mongolab.com:41140/heroku_app23491233";
var mongoPort = 41140;
var collectionDriver;
var mongoClient = new MongoClient(new Server(mongoHost, mongoPort)); //B
mongoClient.open(function(err, mongoClient) { //C
if (!mongoClient) {
console.error("Error! Exiting... Must start MongoDB first");
process.exit(1); //D
}
var db = mongoClient.db("heroku_app23491233"); // E
collectionDriver = new CollectionDriver(db); //F
});
当我键入heroku日志时,我得到的错误来自上面的if(!mongoClient)
app[web.1]: Error! Exiting... Must start MongoDB first
我确信问题出在我试图连接到MongoLab数据库的某个地方。我已经从MongoLab复制了URI,并且创建了一个具有正确凭据的用户
我可以用非常相似的代码连接到localhost,所以我不确定这个示例中出了什么问题
谢谢。基于,我最好的猜测是,这是因为服务器
构造函数希望第一个参数只包含主机名(对于MongoLab,ds041140.MongoLab.com
)。但是,我认为您可以将连接字符串传递到MongoClient.connect
:
// Make sure to replace username and password with the proper values.
var mongoHost = "mongodb://username:password@ds041140.mongolab.com:41140/heroku_app23491233";
MongoClient.connect(mongoHost, function(err, db) {
if (err) return console.log(err);
db.collection('mongoclient_test').update({a:1}, {b:1}, {upsert:true}, function(err, result) {
db.close();
if (err) return console.log(err);
console.log('Okay', result);
});
});
希望这有帮助