我试图启动MEAN堆栈服务器,但是我收到此错误消息:
Mongoose:mpromise(mongoose的默认承诺库)已被弃用,请插入您自己的承诺库:http://mongoosejs.com/docs/promises.html
我试图在这里搜索一些答案,但我找到的答案对我来说还不够清楚:
(node:3341) DeprecationWarning: Mongoose: mpromise
我发现该文件正在调用mongoose.connect,但该问题上的代码对我没有用,有人能解释一下它是如何工作的吗?
答案 0 :(得分:11)
在mongo连接之前使用此代码,这将解决承诺问题。
mongoose.Promise = global.Promise;
答案 1 :(得分:2)
我通常连接到MongoDB的方法是使用Bluebird promise库。您可以在this post中详细了解相关信息。运气好的话,下面的这个片段将帮助你开始,因为它是我在原型设计时使用的。
let mongoose = require('mongoose');
let promise = require('bluebird');
let uri = 'mongodb://localhost:27017/your_db';
mongoose.Promise = promise;
let connection = mongoose.createConnection(uri);
答案 2 :(得分:2)
最新的mongoose库,不要使用任何默认的promise库。从Mongoose v 4.1.0开始,您可以插入自己的库。
如果您使用 mongoose库(不是基础MongoDB驱动程序),那么您可以像这样插入promise库:
//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();

如果您使用的是 MongoDB驱动程序,那么您需要做一些额外的工作。因为,mongoose.Promise
设置了猫鼬不使用驱动程序的Promise。在这种情况下,您可以使用以下代码。
// Use bluebird
var options = { promiseLibrary: require('bluebird') };
var db = mongoose.createConnection(uri, options);

答案 3 :(得分:2)
为我工作。
Mongoose v4.11.7解决了承诺问题
SELECT DATE('2017-01-03') as thedate, SUM(quantity)
FROM table_name
WHERE date_of_order < '2017-01-03';
Mongoose #save()
DATE()