在Heroku上部署Node.js应用程序的问题使用MongoLab
问题描述:
我试图部署一个非常简单的应用程序Heroku。该应用程序的代码可以在雷Wenderlich的网站上找到,在这里:http://www.raywenderlich.com/61078/write-simple-node-jsmongodb-web-service-ios-app我不断收到同样的错误时,我尝试有Heroku的编译代码...在Heroku上部署Node.js应用程序的问题使用MongoLab
var mongoHost = "mongodb://username:[email protected]: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 logs
,错误,我得到来自上述if (!mongoClient)
...
app[web.1]: Error! Exiting... Must start MongoDB first
我敢肯定,问题出在我尝试连接到数据库MongoLab某处。我从MongoLab中复制了URI,并创建了具有正确凭据的用户。
我可以用非常相似的代码连接到localhost,所以我不确定在这个例子中出了什么问题。
谢谢。
答
基于the docs,我最好的猜测是这是因为Server
构造函数期望第一个参数只包含主机名(在MongoLab的情况下,ds041140.mongolab.com
)。不过,我想你可以通过你的连接字符串到MongoClient.connect
:
// Make sure to replace username and password with the proper values.
var mongoHost = "mongodb://username:[email protected]: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);
});
});
Documentation Page For MongoClient
希望帮助!