繁体   English   中英

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

[英]Mongoose's default promise library is deprecated in MEAN stack

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

猫鼬:mpromise(猫鼬的默认诺言库)已过时,请插入您自己的诺言库: http ://mongoosejs.com/docs/promises.html

我尝试在此处搜索一些答案,但发现的答案对我来说还不够清楚:

(节点:3341)弃用警告:猫鼬:mpromise

我找到了名为mongoose.connect的文件,但是关于该问题的代码对我不起作用,有人可以为我解释它的工作原理吗?

在mongo连接之前使用此代码,这将解决promise问题。

mongoose.Promise = global.Promise;

我通常连接到MongoDB的方式是使用Bluebird Promise库。 您可以在这篇文章中了解更多信息 运气好的话,下面的代码片段将帮助您入门,因为这是我在进行原型制作时所使用的。

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

最新的猫鼬库,请勿使用任何默认的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设置了mongoose不使用驱动程序的Promise。 在这种情况下,您可以使用以下代码。

 // Use bluebird var options = { promiseLibrary: require('bluebird') }; var db = mongoose.createConnection(uri, options); 

为我工作。

猫鼬v4.11.7解决承诺问题

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

猫鼬#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
        });
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM