我很難說爲什麼Bluebird的Promise.promisify不是promisifying我的查詢函數,因爲它需要像大多數節點樣式函數一樣的回調。它可能是破壞代碼的Mongoose的aggregation()方法嗎?Bluebird promisify不包裝節點樣式函數
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.
});
這不是一個節點式的回調??? – Bergi
如果你自己編寫這個函數,你應該提出這些'聚合'方法。 – Bergi
是的,'model.aggregate()'是什麼需要promisified,而不是'query()'。 –