Mongoose v4.8.7在设置后警告Promise

时间:2017-03-13 16:11:32

标签: node.js mongodb express mongoose

为什么在我设置了承诺库后,Mongoose会显示已弃用的警告

无数帖子(example #1example #2等)说要设置mongoose.Promise = global.Promise;来解决此警告。我甚至在过去自己做过!但是,我没有做任何事情阻止Mongoose抱怨promise库:

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

我正在使用 v4.8.7 ,代码如下:

var bodyParser  = require('body-parser'),
    config      = require('./config'),
    data        = require('./data'),
    express     = require('express')
    mongoose    = require('mongoose'),
    routes      = require('./routes');

mongoose.Promise = global.Promise;

var db  = mongoose.connection;
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(routes);

db.once('open', function() {

    console.log('Database connected!');

    data.seeds.doSeed(function(){

        app.listen(3000, function() {
            console.log('Mongo example listening on port 3000!');
        });
    });
});

mongoose.connect(config.db.uri, config.db.options);

1 个答案:

答案 0 :(得分:1)

您正在使用documentation

中的基础MongoDB驱动程序
  

MongoDB驱动程序的承诺

     

mongoose.Promise属性设置mongoose使用的promises。但是,>这不会影响底层的MongoDB驱动程序。如果你使用>底层驱动程序,例如Model.collection.db.insert(),你需要>做一些额外的工作来更改底层的promises库。注意>以下代码假定mongoose> = 4.4.4。

var uri = 'mongodb://localhost:27017/mongoose_test';
    // Use bluebird
    var options = { promiseLibrary: require('bluebird') };
    var db = mongoose.createConnection(uri, options);

    Band = db.model('band-promises', { name: String });

    db.on('open', function() {
      assert.equal(Band.collection.findOne().constructor, require('bluebird'));
    });

我认为这是你要求的答案。