猫鼬查找返回的未定义文档

时间:2019-02-18 22:56:16

标签: arrays mongodb mongoose mongodb-query

我有一些看起来像这样的代码。从字面上看只是外观上的改变 和从我的实际代码中删除的内容:

Entry.find(conditions)
.select('ymd intentions outcomes goalCounts')
.lean()
.exec()
.then(function (entries) {
  if (!entries.length) {
    res.write(']')
    res.end()
  }
  entries[entries.length-1].isLast = true
  // more processing of entries etc
}, function (err) {
  // do something with error
})

通常可以,但是我的生产服务器只是报告了一个错误:isLast=true行失败了

TypeError: Cannot set property 'isLast' of undefined

由于那里有检查确保数组本身不为空,所以我知道传递给此函数的是一个非空数组,其最后一项本身未定义。 ymd是必填字段,因此不应有任何{}的结果。

这是在任何情况下的预期行为(与lean()有关吗?​​还是代表某种mongo错误?

1 个答案:

答案 0 :(得分:1)

if选中您的代码后,您的代码会继续,因此,如果entries的长度为0,则会收到您看到的错误。

res.end()调用之后,以太返回,或者将引发错误的行放在else子句中:

if (!entries.length) {
  res.write(']')
  res.end()
  return;
}
entries[entries.length-1].isLast = true

OR

if (!entries.length) {
  res.write(']')
  res.end()
} else {
  entries[entries.length-1].isLast = true
}