【发布时间】:2016-09-14 04:44:31
【问题描述】:
我很困惑为什么 Bluebird 的 Promise.promisify 没有承诺我的查询函数,因为它像大多数节点样式函数一样需要回调。会不会是 Mongoose 的 aggregation() 方法破坏了代码?
function query(callback) {
model.aggregate([{$sort:{a: -1}}], function(err, items) {
if (err) {
console.log(err);
}
let mostA = items[0].a;
Caller.aggregate([{$sort:{b: -1}}], function(err, items) {
if (err) {
console.log(err);
}
let mostB = items[0].b;
callback({mostA: mostA, mostB: mostB});
});
});
};
let most = Promise.promisify(query);
most()
.then((data) => {
// do something
})
.catch((err) => {
console.log('err:', err); // I always get an error.
});
【问题讨论】:
-
这不是节点式回调???
-
如果你自己写这个函数,你宁愿承诺那些
aggregate方法。 -
是的,
model.aggregate()是需要承诺的,而不是query()。
标签: javascript mongodb mongoose promise bluebird