mongodb mongoose连接打开回调没有被调用

555*_*597 5 mongoose mongodb mean-stack

我有一个MEAN项目,这是我的server.js的一个片段

var db = require('./config/db');
// url : 'mongodb://localhost/cdnserver'
// results are same for 127.0.0.1 or the machines ip
console.log(mongoose.connect(db.url));

mongoose.set('debug', true);
mongoose.connection.on('connected', function () {
  console.log('Mongoose default connection open to ' + db.url);
});

// If the connection throws an error
mongoose.connection.on('error',function (err) {
  console.log('Mongoose default connection error: ' + err);
});

// When the connection is disconnected
mongoose.connection.on('disconnected', function () {
  console.log('Mongoose default connection disconnected');
});
Run Code Online (Sandbox Code Playgroud)

这个设置现在已经运行了3个多月.现在我将我的整个MEAN堆栈与数据库一起复制到其他机器.我拿了一个mongodump并做了mongorestore.通过终端的mongo恢复数据库设置看起来很好.

但是,启动服务器时,不会调用connection-open回调.如果我停止mongodb服务,则会调用断开连接和错误回调.我该如何进一步调试?

我从两个设置附加控制台输出.

设置1:

    Mongoose {
  connections:
   [ NativeConnection {
       base: [Circular],
       collections: {},
       models: {},
       replica: false,
       hosts: null,
       host: 'localhost',
       port: 27017,
       user: undefined,
       pass: undefined,
       name: 'cdnserver',
       options: [Object],
       otherDbs: [],
       _readyState: 2,
       _closeCalled: false,
       _hasOpened: false,
       _listening: false,
       db: [Object] } ],
  plugins: [],
  models: {},
  modelSchemas: {},
  options: { pluralization: true } }
Server up on 80
Mongoose default connection open to mongodb://localhost/cdnserver
1
Mongoose: videos.find({}) { skip: 0, limit: 5, fields: undefined }
Run Code Online (Sandbox Code Playgroud)

设置2:

Mongoose {


connections:
   [ NativeConnection {
       base: [Circular],
       collections: {},
       models: {},
       replica: false,
       hosts: null,
       host: 'localhost',
       port: 27017,
       user: undefined,
       pass: undefined,
       name: 'cdnserver',
       options: [Object],
       otherDbs: [],
       _readyState: 2,
       _closeCalled: false,
       _hasOpened: false,
       _listening: false,
       db: [Object] } ],
  plugins: [],
  models: {},
  modelSchemas: {},
  options: { pluralization: true } }
Server up on 80
1
1
Mongoose default connection disconnected
Mongoose default connection error: Error: connection closed
Run Code Online (Sandbox Code Playgroud)

cat /var/log/mongodb/mongodb.log在两台机器中显示完全相同的输出.

更新1:设置开始正常工作,蓝色再次停止.我无法弄清楚是什么让这种情况发生.

555*_*597 0

我终于明白了,新的设置使用的是较新版本的nodejs。

当我从 7.x 迁移到 6.x 时,它工作得很好。我猜 mongoose、node 7、mongodb 版本不能很好地结合在一起。