如何解决Mongoose错误 - Mongoose:mpromise(mongoose的默认承诺库)已弃用,请插入您自己的promise库

时间:2016-12-28 06:22:20

标签: node.js express mongoose promise

我正在学习NodeJS,下面是我被困的查询:

user.route.js

module.exports = function(app){
    console.log("route initialized");
    var ctrl = require("../controllers/user.controller");
    app.post("/api/createuser", ctrl.createUser);   
};

控制器user.controller.js中的createUser函数

var User = require("../models/user");
controller.createUser = function(req,res){
    var user = req.body;
    console.log(user);
    var userModel = new User(user);

    userModel.save(function(err, data){
        if(err){
            res.send("error occurred please try again");
        }else{
            res.send(data);
        }
    });
};

现在,当我尝试通过邮递员点击网址http://localhost:3000/api/createuser时,我正在关注mongo错误

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

现在我不知道如何更改我的代码以适应承诺。有人可以帮我吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

我个人更喜欢bluebird,但您可以选择Q之类的其他内容或es6中的其他内容。

mongoose.Promise = require('bluebird');

mpromise承诺库。如果可用,Mongoose 5.0将默认使用本机承诺,否则不承诺。您仍然可以使用mongoose.Promise = require('bluebird');设置自定义承诺库,但不支持mpromise。 (来自https://github.com/Automattic/mongoose/wiki/5.0-Deprecation-Warnings

答案 1 :(得分:1)

Mongoose的功能需要承诺,他们现在已经弃用了回调。 因此,这两个都会在服务器上发出此警告,

mongoose.createConnection('mongodb://localhost/db');

mongoose.createConnection('mongodb://localhost/db', function(err, res) {

});

要解决此问题,您可以使用第三方库,例如blurbird,也可以使用ES6本机承诺。我通常更喜欢后来的一个,这里是es6原生承诺的片段

mongoose.Promise = global.Promise;
mongoose.createConnection('mongodb://localhost/db');

我希望它有所帮助。