我一直收到一个错误:TypeError: Cannot read property 'doors' of null
。我希望能够将doors
设置为可以为null,这样就可以避免这个错误,只需点击错误响应并返回404。但是,我不知道该怎么做?
这是我的代码:
Data.findOne({
'_id':'6182544c20d538aefe49def0',
'doors.id':doorId
}, {
'doors.$':1
}, function(err, data) {
if (err) {
res.status(404).send('No Matching Door Found')
} else if (data.doors[0].status === 'open') {
res.status(401).send('Door already unlocked')
} else {
res.status(200)
}
})
错误出现在第三行,它找不到ID等于doorId
的门对象。
我曾尝试将doors.id
设置为!doors.id
,然而,无论输入的内容如何,这都会一直命中404。感谢您的帮助。
看来您的整个查询都是错误的。我建议首先尝试这个查询以满足您的需求:
Data.findOne({
'_id':'6182544c20d538aefe49def0',
'doors.id':doorId
}, {
'doors.$':1
}).exec(function(err, data) {
if (err) {
res.status(404).send('No Matching Door Found')
} else if (data.doors[0].status === 'open') {
res.status(401).send('Door already unlocked')
} else {
res.status(200)
}
})
然后我建议您阅读更多关于MongoDB和Mongoose的内容。