2016-09-05 4 views
13

Некоторое время я получаю эту ошибку, и я решил исправить ее сегодня, но через час, пытаясь ее исправить, я могу найти решение.«mpromise (библиотека обещаний по умолчанию 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: "[email protected]", 
12 password: "secret" 
13 }; 
14 
15 describe('User', function() { 
16 beforeEach(function(done) { 
17  user.username = "johnsmith"; 
18  user.email = "[email protected]"; 
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 но я не Не знаю, как это исправить. Может ли кто-нибудь помочь мне и сказать, как исправить это, чтобы ошибка/предупреждение не показывались.

ответ

30

Вам нужно плагин библиотеки обещание (д, синяя птица, в ES6 один ...)

mongoose.Promise = require('bluebird'); 
+0

Благодаря человеку, Ваши решения работает :) –

+1

я все еще получаю это предупреждение при использовании выше с узлом 6.9.1, мангуст 4.8 .3 и синяя птица 3.4.7. – Jackpile

+0

Jackpile, вы также должны добавить его в models.js слишком –

3

Вот пример, который может помочь. Использование ES6 модулей (вместо CommonJS требуется), это работает для меня:

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

Смотрите также это: http://stackoverflow.com/a/38153706/2650732 – wojjas

11

От узла 4.x вы можете просто использовать ES6 обещает:

const mongoose = require('mongoose'); 
mongoose.Promise = Promise; 
Смежные вопросы