2016-12-28 3 views
0

я изучаю NodeJS и ниже запрос, где я застрял:Как разрешить Mongoose Ошибки - Mongoose: mpromise (обещание по умолчанию библиотека Mongoose в) является устаревшим, плагин в своей собственной библиотеке обещания

user.route.js

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

И CreateUser функция в контроллере user.controller.js

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); 
     } 
    }); 
}; 

Теперь, когда я пытаюсь ударить URL http://localhost:3000/api/createuser через Почтальон, я получаю следующее Монг o ошибка

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

Теперь у меня нет идеи о том, как изменить код для размещения обещаний. Может ли кто-нибудь помочь мне с этим?

спасибо

ответ

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

Функция Mongoose требует обещания, и теперь они отказываются от обратных вызовов. Таким образом, оба они будут бросать это предупреждение на сервере,

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

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

}); 

Для исправления этой проблемы, вы можете использовать 3-библиотеки, как blurbird или вы можете использовать ES6 родные обещания. Я обычно предпочитаю более поздний, вот фрагмент для es6 нативных обещаний

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

Надеюсь, это поможет.

Смежные вопросы