2016-09-05 23 views
13

Trong một thời gian tôi gặp phải lỗi này và tôi đã quyết định khắc phục nó ngay hôm nay nhưng sau một giờ cố gắng khắc phục, tôi có thể tìm ra giải pháp."mpromise (thư viện hứa hẹn mặc định của mongoose) không được chấp nhận" khi thử nghiệm

Khi tôi thử nghiệm mô hình tài mongoose tôi lỗi/cảnh báo này được tạo ra:

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

Đây là thử nghiệm của tôi:

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 }); 

Tôi nghĩ rằng nó có cái gì để làm với .save nhưng tôi don 't biết làm thế nào để sửa chữa nó. Ai đó có thể giúp tôi và cho tôi biết cách sửa lỗi sao cho lỗi/cảnh báo không được hiển thị.

Trả lời

30

Bạn cần phải cắm một thư viện lời hứa (q, bluebird, các es6 một ...)

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

Cảm ơn người đàn ông, giải pháp của bạn hoạt động :) –

+1

tôi vẫn nhận được cảnh báo này khi sử dụng trên với nút 6.9.1, Mongoose 4.8 .3 và bluebird 3.4.7. – Jackpile

+0

Jackpile, bạn cũng phải thêm nó vào models.js quá –

3

Dưới đây là một ví dụ mà có thể giúp đỡ. Sử dụng module es6 (thay vì CommonJS yêu cầu) hoạt động này đối với tôi:

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

Xem thêm: http://stackoverflow.com/a/38153706/2650732 – wojjas

11

Từ 4.x nút bạn chỉ có thể sử dụng ES6 hứa hẹn:

const mongoose = require('mongoose'); 
mongoose.Promise = Promise; 
Các vấn đề liên quan