我正在尝试将一个非常简单的应用程序部署到Heroku。应用程序的代码可以在Ray Wenderlich的站点上找到,这里:http://www.raywenderlich.com/61078/write-simple-node-jsmongodb-web-service-ios-app每当我尝试让Heroku编译代码时,我都会遇到同样的错误......
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 logs
时,我得到的错误来自if (!mongoClient)
以上......
app[web.1]: Error! Exiting... Must start MongoDB first
我确定问题出在我尝试连接到MongoLab数据库的某个地方。我已经从MongoLab复制了URI,并且我已经使用正确的凭据创建了一个用户。
我可以使用非常相似的代码连接到localhost,所以我不确定这个例子中出了什么问题。
谢谢。
答案 0 :(得分:0)
基于the docs,我最好的猜测是,因为Server
构造函数需要第一个参数只包含主机名(就MongoLab而言,{{1} }})。但是,我认为您可以将连接字符串传递给ds041140.mongolab.com
:
MongoClient.connect
Documentation Page For MongoClient
希望这有帮助!