没有连接事件正在被解雇 – Mongoose 4.7.1&Express

我有问题通过Mongoose将我的快速应用程序连接到MongoDB。 没有复杂的设置,相当基本:

var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/homeApp'); var db = mongoose.connection; db.on("connecting", function(){ console.log("Connecting to DB..."); }); db.on('connected', function(){ console.log('Connected to db'); }); db.on('error', function(error){ console.log('Error'); }); 

很简单,对吗? 但是这些事件都没有被解雇。 Mongo运行正常,它在默认端口上。 我也尝试更改localhost127.0.0.1并检查我的etc/hosts文件的内容,一切似乎没问题。 如果我把这个URIstring翻译成如下forms:

 'mongoldb://lclhost/homeApp' 

我得到一个错误,说它无法连接,这是预料之中,所以它似乎正在build立/尝试连接,但没有发生。

我logging了db.Db的内容到控制台,并注意到这个connected: false ,这表明它甚至没有尝试连接?

有任何想法吗? 这是在macOS Sierra 10.12.5上运行的Mongoose 4.7.1。

提前致谢!

想想吧! 我试图使用mongodb客户端没有mongoose和一切按预期工作,所以我知道连接是好的,这就把mongoose的责任。

事实certificate,我没有使用4.7.1,因为我曾经想过,只是运行npm install mongoose --save实际上已经安装了3.x版本,根据Mongoose文档,它与最新版本的MongoDB不兼容。 http://mongoosejs.com/docs/compatibility.html

将我的package.json文件中的版本号升级到4.7.1修复了这个问题。

mongoose.connect方法接受一个callback,你可以用它来检查连接:

 mongoose.connect(uri, options, function(error) { // Check error in initial connection. if (error) { console.log(error); } else { console.log('connected ok'); } }); 

我认为你的连接正在创build,但你的db.on事件没有被触发。