2017-02-14 17 views
1

我有一個本地託管的mongodb,可以使用mongodb.MongoClient連接到該數據庫。當我嘗試使用工作URL連接到相同的數據庫時,Mongoose從不返回其承諾

工作代碼:

var mongoClient = require("mongodb").MongoClient; 

...

var startApp = function(db) { 
    // Get our collections in an easy to use format 
    var database = { 
     chats: db.collection('chats'), 
     messages: db.collection('messages') 
    }; 

    // Configure our routes 
    require('./app/routes')(app, database); 

    // START APP 

    // Start app on port 
    app.listen(port); 

    // Tell user the app is running 
    console.log("App running on port " + port); 

    // Expose app 
    exports = module.exports = app; 
} 

// DATABASE 

var database = null; 
mongoClient.connect(config.url, function(err, returnDB) { 
    if(err) { 
     console.log(err); 
    } else { 
     console.log("DB connected"); 
     startApp(returnDB); 
    } 
}); 

遺留代碼將不再有效:

var mongoose = require('mongoose'); 

...

// Connect to DB 
console.log('Connect to database (' + db.url + ')'); 
mongoose.connect(db.url); 

我已經添加了對此連接方法的回調,但它永遠不會被調用(錯誤或沒有錯誤,此連接函數永遠不會回到我的回調)。

這整個遺留應用程序依靠API使用貓鼬與數據庫交談,所以我不想用mongodb重做所有。我怎樣才能解決這個問題?

* config.url和db.url是從同一個文件加載的,它是一個有效且正在運行的mongodb。

+0

你使用的是什麼版本的Mongoose? – Bhavik

+0

npm -v mongoose:4.1.2 – RevertiveDeath

回答

2

這確實很容易修復。感謝@Bhavik詢問我使用的是什麼版本。

我通過在packages.json中指定最新版本將mongoose更新爲4.8.1,並解決了問題。

相關問題