使用mongo 3.2.0升级到4.5.9之后的Mongoose会给出未处理的错误

时间:2016-08-25 16:50:12

标签: node.js mongodb mongoose

为了获得mongo 3.2提供的性能,我们已经从3.0升级到mongo 3.2,mongoose版本从3.8.8升级到4.5.9。但是我们遇到了以下错误,无法找出原因。

events.js:141
 throw er; // Unhandled 'error' event
 ^

TypeError: callback.apply is not a function
at Query.<anonymous> (/home/ubuntu/urbanclap/service-market/node_modules/mongoose/lib/model.js:3327:16)
at /home/ubuntu/urbanclap/service-market/node_modules/mongoose/node_modules/kareem/index.js:259:21
at /home/ubuntu/urbanclap/service-market/node_modules/mongoose/node_modules/kareem/index.js:127:16
at doNTCallback0 (node.js:408:9)
at process._tickCallback (node.js:337:13)
error: Forever detected script exited with code: 1
error: Script restart attempt #11
Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html

从Mongoose代码我知道它发出了以下代码的错误。

Model.$wrapCallback = function(callback) {
var _this = this;
return function() {
  try {
    callback.apply(null, arguments);
  } catch (error) {
    _this.emit('error', error);
  }
};
};

1 个答案:

答案 0 :(得分:0)

可能是因为mongoose最新版本,我们必须明确添加承诺。

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://10.7.0.3:27107/data/db');

http://mongoosejs.com/docs/promises.html