当我尝试使用工作URL连接到同一个数据库时,Mongoose永远不会返回它的承诺

时间:2017-02-14 20:23:31

标签: node.js mongodb mongoose mean-stack

我有一个本地托管的mongodb,我可以使用mongodb.MongoClient连接到它。

工作代码:

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);

我已经为这个connect方法添加了一个回调但它永远不会被调用(错误或没有错误,这个连接函数永远不会被我的回调)。

这整个遗留应用程序依赖于使用mongoose与数据库通信的API,因此我不想使用mongodb重做它。我该如何解决这个问题?

* config.url和db.url是从同一个文件加载的,它是一个有效且正在运行的mongodb。

1 个答案:

答案 0 :(得分:2)

< p>这很容易修复。感谢@Bhavik询问我使用的是什么版本。< / p> < p>我通过在packages.json中指定最新版本将mongoose更新为4.8.1并解决了问题。< / p>