我和mongoose 一起工作.我见过很多开发人员发出以下命令:

mongoose.Promise = global.Promise;

然后我好奇地想知道mongoose.Promise的原值是多少.我已在编辑器中输入以下命令:

const mongoose = require("mongoose");

console.log("promise: ", mongoose.Promise);

我的控制台回复我:

promise:函数promise(){[本机代码]}

既然mongoose 的promise 已经返回了本机代码,那么为什么要将命令设为mongoose.Promise = global.Promise呢?我不明白重点,如果有人能帮我们理解,那就太好了,

谢谢

推荐答案

这是旧示例中的遗留代码,Mongoose 5不需要这些代码.

mongoose 4依靠自己的promise 实现,mpromise.mongoose.Promise不一定是Promise.

Mongoose 4 documentation个国家:

默认情况下,Mongoose或Blueboose会使用,

虽然关于蓝鸟的说法不再属实;Mongoose 5放弃了对没有本机promise 的 node 版本的支持.

mongoose.Promise = global.Promise;

如果在Mongoose被导入后为global.Promise分配了另一个实现(如Bluebird),则可能仍然需要,但更好的办法是提前分配global.Promise = Bluebird.

Node.js相关问答推荐

在child_Process中持久运行SSH命令

Mongoose:如何在文档中推送到Caped(有限大小,滚动窗口)数组?

对于具有重叠列的组合键,在冲突&q;上没有唯一或排除约束匹配错误

Node js 处理回调和 Promise

Nestjs重写子类dto nodejs中的属性

如何获取mongoose中单个id数据的记录

使用pm2启动服务器

dayjs的isSameOrAfter方法未按预期工作

表达 js 错误处理程序在第一个之后被忽略

在将用作 nodejs/expressjs 中的中间件的函数中使用 keycloak.protect()

错误:无法检测到网络(event="noNetwork",code=NETWORK_ERROR,version=providers/5.6.8)

MERN 堆栈项目中的 React [create-react-app] 正在提供依赖项

部署云功能 Firebase/Stripe 时出错

为什么在调用数据库调用时我的参数没有定义?

解决并行保存到 mongodb

如何在 Nest.js 中使用查询参数?

mongoose 模式中的嵌套对象

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

NPM:为什么要安装这个包?

什么时候应该将函数存储到变量中?