Mongoose连接回调从未调用

时间:2018-02-09 06:16:52

标签: node.js mongodb mongoose

我在使用猫鼬方面遇到了困难。我有这个小代码,它连接到mongodb服务器。

var mongoose = require('mongoose');
var connection = mongoose.connect('mongodb://localhost:27017/my_db', function (err) {
    console.log("on connect callback called");
    if (err) throw err;
});
console.log("connect called");

不幸的是,在运行此代码时,我在控制台中获得了connect called,但on connect callback called 从未被调用。

我的mongodb控制台显示我运行此代码时有一些连接

2018-02-09T11:42:15.422+0530 I NETWORK  [initandlisten] waiting for connections on port 27017
2018-02-09T11:42:21.968+0530 I NETWORK  [listener] connection accepted from 127.0.0.1:56156 #1 (1 connection now open)
2018-02-09T11:42:21.970+0530 I NETWORK  [listener] connection accepted from 127.0.0.1:56158 #2 (2 connections now open)
2018-02-09T11:42:21.971+0530 I NETWORK  [listener] connection accepted from 127.0.0.1:56160 #3 (3 connections now open)
2018-02-09T11:42:21.971+0530 I NETWORK  [listener] connection accepted from 127.0.0.1:56162 #4 (4 connections now open)
2018-02-09T11:42:21.971+0530 I NETWORK  [listener] connection accepted from 127.0.0.1:56164 #5 (5 connections now open)

请帮忙!

1 个答案:

答案 0 :(得分:1)

mongoose.connect的第二个参数不是回调,它是一个描述poolSizeautoIndexuserpass等的选项对象。在连接发生后调用一次,你应该使用once上的方法open

mongoose.connect('mongodb://localhost:27017/my_db', {poolSize: 20});
var db = mongoose.connection;
db.once('open', function() { console.log('Successfully connected');});
db.on('error', console.error.bind(console, 'conn error:'));

OP发现版本兼容性问题。将mongoose版本升级为5.0.4后,就可以了。