Mongoose - Why we make "mongoose.Promise = global.Promise" when setting a mongoose module?
This is legacy code from older examples that isn't needed with Mongoose 5.
Mongoose 4 relied on its own promise implementation, mpromise
. mongoose.Promise
wasn't necessarily Promise
global.
As Mongoose 4 documentation states:
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.
Though the statement about Bluebird is no longer true; Mongoose 5 dropped the support of Node versions that don't have native promises.
mongoose.Promise = global.Promise;
may still be needed if global.Promise
was assigned with another implementation (e.g. Bluebird) after Mongoose was imported, though a better thing would be to assign global.Promise = Bluebird
earlier instead.
Mongoose maintainer here. If you're using Mongoose 5, please remove mongoose.Promise = global.Promise;
. That line was used to address the below deprecation warning with promises in Mongoose 4:
WARNING: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead
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
If we want to use mongoose in different position inside the codes it must be viewed as global mode, that's why we need to set mongoose as :
mongoose.Promise = global.Promise;