,我有一段代碼,使用的Promises
,我現在用的是bluebird
庫。即使沒有錯誤,承諾也會被拒絕。
的問題是,我的承諾,被拒絕,即使沒有錯誤。它完全跳過即使是一個簡單的console.log
這裏.then
塊,使得使用承諾的代碼:
function returnMeetings(query) {
return new Promise((reject, resolve) => {
Meeting.find(query, (err, foundMeetings) => {
if (err) {
console.log("We have a error")
reject(err);
}
resolve(foundMeetings);
})
})
}
這裏是利用該returnMeetings
函數的代碼
returnMeetings(query)
.then((data) => {
console.log("here we are")
// while (count < stopAt) {
// let localData = [];
// if (req.params.duration === 'monthly') {
// let {
// date1,
// date2
// } = twoDates(count, count);
// localData = data.filter((el) => {
// if (el.startDate) {
// let localDate = new Date(el.startDate);
// if (localDate >= date1 && localDate <= date2) {
// return el;
// }
// }
// })
// if (localData) {
// data.push({
// data: localData,
// month: count
// })
// }
//
// if (count === stopAt - 1) {
// myEmitter.emit('found all meetings')
// } else {
// count++;
// }
// }
// }
}).catch((err) => {
res.status(500).json({
message: err
})
})
正如你可以在returnMeetings
功能看,我已經把一個console.log
的if(err)
塊內,而且也從未運行,從我的結論是我沒有收到任何錯誤貓鼬查詢。
儘管如此,代碼完全跳過.then
塊,並落入catch
鏈。我有then
塊內的簡單console.log
,並注意到一個有趣的事情是,err
裏面catch
塊回調值是MongoDB的文檔的數組。
有人能解釋,爲什麼我的代碼以這種方式表現?
感謝您的幫助。
也許Meeting.find()拋出一個異常 –