Vấn đề bạn đang gặp phải là các truy vấn mongoose không trả lại các lời hứa chính thức đầy đủ - trích dẫn trực tiếp http:// mongoosejs.com/docs/promises.html (v4.7.6)
// A query is not a fully-fledged promise, but it does have a `.then()`.
query.then(function (doc) {
// use doc
});
// `.exec()` gives you a fully-fledged promise
var promise = query.exec();
assert.ok(promise instanceof require('mpromise'));
Nói cách khác, then
hàm là đường cú pháp và không phải là promise
đó là lý do tại sao bind
và các chức năng hứa hẹn khác không hoạt động.
Để làm cho nó hoạt động, bạn có thể kết thúc nó trong một lời hứa đầy đủ hoặc sử dụng exec
chức năng như được đề xuất trong tài liệu