2014-09-26 194 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

希望幫助!

相關問題