Web*_*man 22 javascript mongoose node.js
我和Mongoose一起工作.我见过很多开发人员发出以下命令:
mongoose.Promise = global.Promise;
Run Code Online (Sandbox Code Playgroud)
然后我很好奇,看看它的原始价值是什么mongoose.Promise
.我在编辑器中输入了以下命令:
const mongoose = require("mongoose");
console.log("promise: ", mongoose.Promise);
Run Code Online (Sandbox Code Playgroud)
我的控制台回复了我:
promise:函数Promise(){[native code]}
好的,那么为什么要发出命令,mongoose.Promise = global.Promise
因为Mongoose的承诺已经返回了本机代码?我不明白这一点,如果有人能帮我们理解,会很棒,
谢谢
Est*_*ask 31
这是Mongoose 5不需要的旧示例的遗留代码.
Mongoose 4依靠自己的承诺实施,mpromise
.mongoose.Promise
不一定是Promise
全球性的.
正如Mongoose 4文档所述:
默认情况下,Mongoose 5.0将使用本机承诺(或者如果不存在本机承诺,则使用bluebird),但仍支持插入自己的ES6兼容的promises库.Mongoose 5.0不支持mpromise.
虽然关于蓝鸟的声明已不再适用; Mongoose 5放弃了没有本机承诺的Node版本的支持.
mongoose.Promise = global.Promise;
Run Code Online (Sandbox Code Playgroud)
如果global.Promise
在导入Mongoose之后分配了另一个实现(例如Bluebird),可能仍然需要,但更好的方法是global.Promise = Bluebird
更早地分配.
vka*_*v15 19
猫鼬维护者在这里。如果您使用的是 Mongoose 5,请删除mongoose.Promise = global.Promise;
. 该行用于在 Mongoose 4 中通过promise解决以下弃用警告:
WARNING: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead
Run Code Online (Sandbox Code Playgroud)
It does nothing in Mongoose 5. You should only use mongoose.Promise
in Mongoose 5 if you want to use your own promise library with Mongoose, like Bluebird or Q.
There's also a little more about mongoose.Promise
here: https://masteringjs.io/tutorials/mongoose/promise#the-mongoosepromise-property