arrays - 猫鼬找到返回的未定义文档
问题描述
我有一些看起来像这样的代码。从字面上看,只是从我的实际代码中进行的外观更改和删除:
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 错误?
解决方案
您的代码在if
您提到的检查后继续,因此如果entries
长度为 0,您将收到您看到的错误。
调用后以太返回res.end()
,或将引发错误的行放在else
子句中:
if (!entries.length) {
res.write(']')
res.end()
return;
}
entries[entries.length-1].isLast = true
或者
if (!entries.length) {
res.write(']')
res.end()
} else {
entries[entries.length-1].isLast = true
}
推荐阅读
- java - 在字符串代码中查找所有字谜不起作用
- machine-learning - 不同的训练集和测试集特征:scikit
- npm - 当我尝试“npm install --only=prod @hyperledger/caliper-cli@0.4.2”时,我失败了。为什么?
- angular - 比较正值或负值并添加箭头
- c# - url重定向ajax调用引号内的引号
- java - Websphere 集群环境中的 Rest API 日志记录
- docker - 调用 GetAuthorizationToken 操作时发生错误(UnrecognizedClientException):
- python - 来自 Dropbox api 的“未处理的身份验证类型:应用程序、用户”
- reactjs - 如何管理用户滚动时加载但也在不同地方使用的数据?
- java - java中while循环的无限执行