【问题标题】:How to set an object as nullable in Javascript (NodeJS)如何在Javascript(NodeJS)中将对象设置为可为空
【发布时间】:2021-12-21 14:55:22
【问题描述】:

我不断收到错误消息:TypeError: Cannot read property 'doors' of null。我希望能够将doors 设置为可为空,以便能够避免此错误,只需点击错误响应并返回 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。 任何帮助表示赞赏,谢谢。

【问题讨论】:

  • 这是 JS 错误。您可以使用可选链接data?.doors[0].status 来避免它。

标签: javascript node.js mongodb mongoose null


【解决方案1】:

看来您的整个查询都是错误的。 我建议首先根据您的需要尝试此查询:

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 的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 2016-06-06
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多