Mongoose - Why we make “mongoose.Promise = global.Promise” when setting a mongoose module?

前端 未结 5 1116
野性不改
野性不改 2020-12-29 18:04

I\'m working with Mongoose. I have seen a lot of developers make the following command:

mongoose.Promise = global.Promise;

Then I was curi

相关标签:
5条回答
  • 2020-12-29 18:45

    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.

    0 讨论(0)
  • 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;
    
    0 讨论(0)
  • 2020-12-29 18:45

    we used just in the point when we want to get connected in to MongoDB database :

    var mongoose = require('mongoose');
    
    var mongoDB = ' database url ';
    
    mongoose.connect(mongoDB);
    
    mongoose.Promise = global.Promise;
    
    mongoose.connection.on('error',console.error.bind(console, 'MongoDB connection error:'));
    

    you need to create schema and do your own model after

    0 讨论(0)
  • 2020-12-29 18:54

    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

    0 讨论(0)
  • 2020-12-29 19:06

    First, mongoose uses Promise for Async applications. In new versions it can be:

    mongoose.connect("URL").then("what you need to happen after the connection is done").catch("when the error happened")
    

    Therefore, I used promise and global to use mongoose anywhere as Async when writing mongoose.

    0 讨论(0)
提交回复
热议问题