我在Mac终端运行node file.js时收到此错误消息。我的终端没有任何特殊的配置。我尝试在“mongoose.connect."之前添加“mongoose.Promise = global.Promise”。
弃用警告:Mongoose:mpromise(mongoose的默认promise库)已弃用,请插入您自己的promise库:http://mongoosejs.com/docs/promises.html
下面是源代码:
var Product = require('../models/product');
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('localhost:27017/shopping');
var products = [
new Product({
imagePath: 'https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png',
title: 'Gothic 5 Video Game',
description: 'Awesome Game!!!!',
price: 10
}),
new Product({
imagePath: 'https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png',
title: 'Gothic 4 Video Game',
description: 'Also Awesome Game!!!!',
price: 20
}),
new Product({
imagePath: 'https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png',
title: 'Gothic 3 Video Game',
description: 'best game ever!!!!',
price: 15
}),
new Product({
imagePath: 'https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png',
title: 'Gothic 2 Video Game',
description: 'top notch!!!',
price: 50
})
];
var done = 0;
for (var i = 0; i < products.length; i++) {
products[i].save(function(err, result){
done++;
if (done === products.length) {
exit();
}
});
}
function exit() {
mongoose.disconnect();
}
字符串
2条答案
按热度按时间erhoui1w1#
这个错误说Mongoose的默认promise库已被弃用,请插入您自己的promise库。
默认情况下,当您使用Mongoose时,它会插入一个默认的promise库。它使用Mongoose附带的
mpromise
。因此,它有一个默认的promise库实现,但是,不管出于什么原因,他们不希望您再使用它。
相反,你有几个使用你自己的promise库的选项。Node.js社区中最受欢迎的是Bluebird、Q或ES6 Promises。
我建议你使用ES6 Promises,因为它绝对能满足你从Mongoose中获得Promise所需的一切。
如果这看起来有点武断,比如为什么 Mongoose 不为我们解决这个问题。Mongoose这样做是为了给予我们在使用promise实现时有更大的灵活性,这对一些用户来说非常重要。对于某些项目,这是您将要关心的事情,但是,当您第一次开始时,您并不真正担心它。
所以,你所要做的就是修复Mongoose的内部promise库:
在你的文件的最上面,你有这个:
字符串
下面你要写:
型
所以,在左手我们说嘿
Mongoose
,无论何时你想为任何类型的与数据库的交互创建一个promise,我们都希望你使用这个promise库的实现。global.Promise
是对Node.js环境中Promise的ES6实现的引用。所以,我们在这段代码中说,每当你需要实现一个promise时,只需使用ES6实现。
cidc1ykv2#
我也有同样的问题。为了消除这个警告,你必须在每个需要mongoose的文件中添加“mongoose.promise = global.promise”。