在MEAN堆栈

时间:2016-08-30 13:57:00

标签: javascript node.js mongodb mongoose promise

我试图启动MEAN堆栈服务器,但是我收到此错误消息:

  

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

我试图在这里搜索一些答案,但我找到的答案对我来说还不够清楚:

(node:3341) DeprecationWarning: Mongoose: mpromise

我发现该文件正在调用mongoose.connect,但该问题上的代码对我没有用,有人能解释一下它是如何工作的吗?

4 个答案:

答案 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()