我和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 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.