gpt4 book ai didi

javascript - "Mongoose mpromise is deprecated"

转载 作者:太空宇宙 更新时间:2023-11-04 03:27:48 25 4
gpt4 key购买 nike

在 Mac 终端中运行 node file.js 时收到此错误消息。我的终端没有任何特殊配置。我尝试在“mongoose.connect...”之前添加“mongoose.Promise = global.Promise”。

DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: 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();
}

最佳答案

该错误表明 Mongoose 的默认 Promise 库已被弃用,请插入您自己的 Promise 库。

默认情况下,当您使用 Mongoose 时,它​​会插入一个默认的 Promise 库。它使用 Mongoose 附带的 mpromise

因此,它有一个 Promise 库的默认实现,但是,无论出于何种原因,他们不希望您再使用它。

相反,您有多种选择来使用自己的 Promise 库。 Node.js 社区中最受欢迎的是 Bluebird、Q 或 ES6 Promises。

我建议您使用 ES6 Promises,因为它绝对可以满足您从 Mongoose 中获得 Promise 所需的一切。

如果这看起来有点武断,比如为什么 Mongoose 不帮我们解决这个问题。 Mongoose 这样做是为了让我们更灵活地选择要使用的 Promise 实现,这对于某些用户来说非常重要。对于某些项目,这是您需要关心的事情,但是,当您第一次开始使用它时,您实际上并不太担心它。

因此,您所要做的就是修复 Mongoose 的内部 Promise 库:

在文件的最顶部有以下内容:

const mongoose = require('mongoose');

在它下面你要写:

mongoose.Promise = global.Promise;

因此,在左侧,我们说嘿 Mongoose,每当您想要为与数据库进行任何类型的交互创建 Promise 时,我们希望您使用 Promise 库的此实现。

global.Promise 是对 Node.js 环境中 Promise 的 ES6 实现的引用。

因此,我们用这段代码表示,每当您需要实现 Promise 时,只需使用 ES6 实现即可。

关于javascript - "Mongoose mpromise is deprecated",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com