,我有一段代码,使用的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()抛出一个异常 –