在MEAN堆栈中不推荐使用Mongoose的默认承诺库

我试图启动一个MEAN堆栈服务器,但是我得到这个错误信息:

Mongoose:mpromise(mongoose的默认承诺库)已被弃用,插入自己的承诺库,而不是: http ://mongoosejs.com/docs/promises.html

我试图在这里search一些答案,但是我发现的答案对我来说还不够清楚:

(node:3341)DeprecationWarning:Mongoose:mpromise

我发现文件调用mongoose.connect,但在这个问题上的代码不适合我,任何人都可以解释它是如何工作的?

使用这个代码,在mongo连接之前,这将解决承诺问题。

mongoose.Promise = global.Promise; 

我通常连接到MongoDB的方式是使用蓝鸟承诺库。 你可以在这篇文章中阅读更多关于它的内容 。 如果运气好的话,下面的代码片段可以帮助您开始使用,因为这正是原型devise时所使用的。

 let mongoose = require('mongoose'); let promise = require('bluebird'); let uri = 'mongodb://localhost:27017/your_db'; mongoose.Promise = promise; let connection = mongoose.createConnection(uri); 

最新的mongoose库,不要使用任何默认的承诺库。 从Mongoose v 4.1.0开始,你可以插入你自己的库。

如果你正在使用mongoose库(不是基础的MongoDB驱动程序),那么你可以像这样插入承诺库:

 //using Native Promise (Available in ES6) mongoose.Promise = global.Promise; //Or any other promise library mongoose.Promise = require('bluebird'); //Now create query Promise var query = someModel.find(queryObject); var promise = query.exec(); 

为我工作。

Mongoose v4.11.7解决承诺问题

 const mongoose = require('mongoose'); mongoose.Promise = global.Promise; mongoose.connection.openUri('mongodb://127.0.0.1:27017/app_db', { /* options */ }); 

mongoose#save()

 var article = new Article(Obj); article.save().then(function(result) { return res.status(201).json({ message: 'Saved message', obj: result }); }, function (err) { if (err) { return res.status(500).json({ title: 'Ac error occurred', error: err }); } });