Node.js &引用;mpromise(mongoose的默认承诺库)已被弃用;测试时出错

Node.js &引用;mpromise(mongoose的默认承诺库)已被弃用;测试时出错,node.js,mongodb,mongoose,mocha.js,Node.js,Mongodb,Mongoose,Mocha.js,一段时间以来,我一直遇到这个错误,我决定今天修复它,但经过一个小时的努力,我可以找到解决办法 当我测试mongoose用户模型时,会生成以下错误/警告: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html 这是我的测试: 1 var as

一段时间以来,我一直遇到这个错误,我决定今天修复它,但经过一个小时的努力,我可以找到解决办法

当我测试mongoose用户模型时,会生成以下错误/警告:

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

  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
有关,但我不知道如何修复它。有人能帮助我并告诉我如何修复它,以便不显示错误/警告。

您需要插入一个promise库(q、bluebird、es6库…)


下面是一个可能有帮助的例子。 使用es6模块(而不是CommonJS-require)对我来说很有用:

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

页面内容:

在本页上:

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


在node 4.x中,您只需使用ES6承诺:

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

谢谢你,你的解决方案是有效的:)当我在node 6.9.1、mongoose 4.8.3和bluebird 3.4.7.Jackpile中使用上述内容时,仍然会收到此警告,你还必须将其添加到models.js中才能看到:
const mongoose = require('mongoose');
mongoose.Promise = Promise;