为什么在我设置了承诺库后,Mongoose会显示已弃用的警告?
无数帖子(example #1,example #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);
答案 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'));
});
我认为这是你要求的答案。