(node:3341) DeprecationWarning: Mongoose: mpromise

后端 未结 8 1830
忘了有多久
忘了有多久 2020-11-27 11:19

I\'m trying to develop a class on the top of the mongoose with my custom methods, so I extended the mongoose with my own class but when I invoke to create a new car method i

相关标签:
8条回答
  • 2020-11-27 11:47
    var mongoose = require('mongoose');
    mongoose.Promise = global.Promise;
    db = mongoose.connect(env.DATABASE_URI, function(){
      //
    })
    

    this work for me.

    0 讨论(0)
  • 2020-11-27 11:50
    var mydb;
    var uri = 'mongodb://localhost/user1';
    var promise = mongooose.connect(uri,{
          useMongoClient: true,
    });
    promise.openUri(uri,function(errr,db){
    if(errr){
            throw errr;
          }else{
            console.log("Connection Successfull");      
            mydb = db;
          }
    });
    

    One needs to have connection with the help of promise in the latest version of mongoose [this is the link][1] [1]: http://mongoosejs.com/docs/promises.html

    0 讨论(0)
  • 2020-11-27 11:50

    Just add the second parameter as an object to the connect() method.

    mongoose.connect('dbUrl', {
      useMongoClient: true
    });
    

    See: http://mongoosejs.com/docs/connections.html#use-mongo-client

    0 讨论(0)
  • 2020-11-27 11:51

    Mongoose 4.8.6

    If you catch error like this:

    (node:9600) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html

    You need also to set in options which promise library to use for the driver.

    mongoose.Promise = global.Promise
    mongoose.connect(uri, { useMongoClient: true, options: { promiseLibrary: mongoose.Promise }})
    
    0 讨论(0)
  • 2020-11-27 11:53

    I think you have your answer but I use global.promise with error handling

    // MongoDB connection
    mongoose.Promise = global.Promise;
    
    var promise = mongoose.connect('mongodb://localhost:27017/test_db', {
      useMongoClient: true,
    });
    
    promise.then(function(db) {
        console.log("Connected to database!!!");
    }, function(err){
        console.log("Error in connecting database " + err);
    });
    
    0 讨论(0)
  • 2020-11-27 11:54

    While the answer above is accurate and works, you have to account for the issue of Performance if you have a real, production Node app.

    The solution above will use native ES6 promises - which are 4X slower than bluebird in the benchmarks I've shared below. This could dramatically affect the performance of an API written in Node and using MongoDB.

    I recommend using Bluebird:

    // Assuming you store the library in a var called mongoose
    var mongoose = require('mongoose');
    
    // Just add bluebird to your package.json, and then the following line should work
    mongoose.Promise = require('bluebird');
    

    Benchmark Results

    Platform: (using latest Node at time of writing)

    • Linux 4.4.0-59-generic x64
    • Node.JS 6.9.4
    • V8 5.1.281.89
    • Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz × 4
    • 16 GB RAM with 500 GB SSD

        | file                                      | time(ms) | memory(MB) |
        |-------------------------------------------|----------|------------|
        | callbacks-baseline.js                     | 114      | 25.09      |
        | callbacks-suguru03-neo-async-waterfall.js | 152      | 32.98      |
        | promises-bluebird-generator.js            | 208      | 29.89      |
        | promises-bluebird.js                      | 223      | 45.47      |
        | promises-cujojs-when.js                   | 320      | 58.11      |
        | promises-then-promise.js                  | 327      | 64.51      |
        | promises-tildeio-rsvp.js                  | 387      | 85.17      |
        | promises-lvivski-davy.js                  | 396      | 81.18      |
        | callbacks-caolan-async-waterfall.js       | 527      | 97.45      |
        | promises-dfilatov-vow.js                  | 593      | 148.30     |
        | promises-calvinmetcalf-lie.js             | 666      | 122.78     |
        | generators-tj-co.js                       | 885      | 121.71     |
        | promises-obvious-kew.js                   | 920      | 216.08     |
        | promises-ecmascript6-native.js            | 931      | 184.90     |
        | promises-medikoo-deferred.js              | 1412     | 158.38     |
        | streamline-generators.js                  | 1695     | 175.84     |
        | observables-Reactive-Extensions-RxJS.js   | 1739     | 218.96     |
        | streamline-callbacks.js                   | 2668     | 248.61     |
        | promises-kriskowal-q.js                   | 9889     | 410.96     |
        | observables-baconjs-bacon.js.js           | 21636    | 799.09     |
        | observables-pozadi-kefir.js               | 51601    | 151.29     |
        | observables-caolan-highland.js            | 134113   | 387.07     |
    
    0 讨论(0)
提交回复
热议问题