找不到文档时Express中的Cursor.forEach挂起
我正在使用MongoDB和NodeJS堆栈,尝试执行一些简单的条件逻辑。不幸的是,我将MongoDB本机驱动程序用于NodeJS,并且该项目的所有者没有选择使用Mongoose。
以下代码正在浏览我的文档,并基于'props':'value'进行过滤,并通过Express发送响应。
let cursor = db.collection('collection').find({props: 'value' })
cursor.forEach((doc) => {
if (!doc) {
return res.send('No document found with that property assigned!')
}
res.json(doc)
})
当找到属性时,该方法运行良好,但是当找不到该值时,Express会挂起。有没有人修复?
回答如下:No document found ...
条件似乎永远不会触发。 if
块位于一段代码内,该代码段仅在doc
变量存在的情况下才会执行。
尝试将“无结果”条件设置为默认条件,或检查光标是否包含文档。