【问题标题】:Mongoose: mpromise (mongoose's default promise library) is deprecatedMongoose:不推荐使用 mpromise(mongoose 的默认承诺库)
【发布时间】:2017-07-28 10:13:13
【问题描述】:

我正在使用来自 Internet 的流行修复程序,但它仍然无法正常工作...这是我的代码:

var Lobby = require('../models/lobbies-model');
var mongoose = require('mongoose');

mongoose.Promise = require('bluebird');
mongoose.connect('localhost:27017/mydb');
var lobbies = [
    new Lobby({
        nickname: 'Nickname1',
        status: "Status1",
    }),
    new Lobby({
        nickname: 'Nickname2',
        status: "Status2",
    })
];

var done = 0;
for (var i = 0; i < lobbies.length; i++) {
    lobbies[i].save(function(err, result) {
        done++;
        console.log(result);
        if (done === lobbies.length) {
            exit();
        }
    });
}

function exit() {
    mongoose.disconnect();
}

在我的控制台和结果中出现错误...

(node:1108) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
undefined
undefined

如何解决这个错误?

【问题讨论】:

  • 在设置mongoose.Promise 后尝试移动var Lobby = require('../models/lobbies-model'); 行。

标签: node.js mongodb express mongoose


【解决方案1】:

https://github.com/Automattic/mongoose/issues/4291#issuecomment-230312093 所述,解决方法是在连接前使用mongoose.Promise = global.Promise;

  mongoose.Promise = global.Promise; // ADD THIS
  mongoose.connect('localhost:27017/mydb');

【讨论】:

  • 第一行和第二行应该只保留一个吧?
  • 是的,更新了,你应该添加蓝鸟这样的东西bluebirdjs.com/docs/api/promisification.html
  • OP 已经在他们的代码中调用了mongoose.Promise = require('bluebird');
猜你喜欢
  • 2017-05-12
  • 2017-07-05
  • 2017-09-01
  • 2017-07-11
  • 2019-06-13
  • 2017-02-28
  • 2015-01-21
  • 2014-01-21
  • 2017-01-12
相关资源
最近更新 更多