javascript – Mongoose – 为什么我们在设置mongoose模块时会制作“mongoose.Promise = global.Promise”?

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

mongoose.Promise = global.Promise;

然后我很想知道mongoose.Promise的原始值是多少.我在编辑器中输入了以下命令:

const mongoose = require("mongoose");

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

我的控制台回复了我:

promise: function Promise() { [native code] }

好吧,那么为什么要使命令mongoose.Promise = global.Promise,因为Mongoose的承诺已经返回了本机代码?我不明白这一点,如果有人能帮我们理解,会很棒,

谢谢

解决方法:

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

Mongoose 4依靠自己的承诺实施,mpromise. mongoose.Promise不一定是Promise全球性的.

正如Mongoose 4 documentation所述:

Mongoose 5.0 will use native promises by default (or bluebird,
if native promises are not present) but still
support plugging in your own ES6-compatible promises library. Mongoose 5.0
will not support mpromise.

虽然关于蓝鸟的声明已不再适用; Mongoose 5放弃了没有本机承诺的Node版本的支持.

mongoose.Promise = global.Promise;

如果global.Promise在导入Mongoose之后被分配了另一个实现(例如Bluebird),可能仍然需要,但更好的方法是更早地分配global.Promise = Bluebird.

上一篇:MongoDB


下一篇:Node.js 之mongodb