“mpromise(mongoose的默认承诺库)已弃用”testing时出错

有一段时间我得到这个错误,我决定今天修复它,但一小时后,试图解决它,我可以find解决scheme。

当我testing我的mongoose用户模型时,会产生这个错误/警告:

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

这是我的testing:

  1 var assert = require('chai').assert; 2 var mongoose = require('mongoose'); 3 var clearDB = require('mocha-mongoose')(require('../../config/database').uri, { skip: ['workouts'] }); 4 var database = require('../../config/database').connect; 5 6 var User = require('../../app/models/user'); 7 var user = new User({}); 8 9 var req_body = { 10 username: "garyvee", 11 email: "gary@vaynermedia.com", 12 password: "secret" 13 }; 14 15 describe('User', function() { 16 beforeEach(function(done) { 17 user.username = "johnsmith"; 18 user.email = "john@gmail.com"; 19 user.password = "secret"; 20 done(); 21 }); 22 23 it('can be saved', function() { 24 return user.save(function(err: any) { 25 assert.isNull(err); 26 }) 27 }); 28 }); 

我认为这与.save但我不知道如何解决。 有人可以帮助我,并告诉我如何解决这个错误/警告不显示。

你需要插入一个承诺库(Q,蓝鸟,ES6的…)

 mongoose.Promise = require('bluebird'); 

从节点4.x你可以使用ES6承诺:

 const mongoose = require('mongoose'); mongoose.Promise = Promise; 

这是一个可能有用的例子。 使用es6模块(而不是CommonJS要求),这对我有用:

 // mongoose's Promise library is deprecated, using es6's: import es6Promise from 'es6-promise'; mongoose.Promise = es6Promise.Promise; 

你可以参考如何使用mongoose诺言 – mongo

页面内容:

在这个页面上: http : //mongoosejs.com/docs/promises.html

标题是插入你自己的承诺库