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