2014-09-26 144 views
0

我试图部署一个非常简单的应用程序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,所以我不确定在这个例子中出了什么问题。

谢谢。

回答

0

基于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

希望帮助!

相关问题