【问题标题】:Express Handling empty req.body?快递处理空的req.body?
【发布时间】:2019-12-13 22:44:55
【问题描述】:

什么是处理空或未定义的最佳方法 req.body 目前我有一个 if 语句将检查 req.body 是否为真或未定义或长度小于 0

有没有更好的方法来做到这一点? 是不是做错了?

代码示例:

const location = req.body.location;

if (location === undefined || !location || location.length < 0)

【问题讨论】:

  • this 回答你的问题了吗?
  • 我只是好奇,为什么要检查 request.body 是否为空,然后在示例代码中查找 req 正文中的位置键。可能是您正在尝试进行验证吗?在这种情况下,您可以使用诸如 express-validator 之类的验证包来检查请求正文中是否存在密钥
  • 哦,好的,谢谢。在使用 mongo 根据该位置值查询数据库之前,我只需要确保我有一个有效值,但是是的,我会查看验证模块

标签: javascript node.js express backend


【解决方案1】:

像这样检查,它会检查所有条件undefinednull还是包含location key或不包括length

if(req.body && req.body.location){
    const location = req.body.location
}

const location = (req.body && req.body.location) ? req.body.location : '' ;

if (location){
    // rest code
}

【讨论】:

    【解决方案2】:

    你可以结合Logical OR (||)ES6 Destructuring assignment with default Value

    const { location = [] } = req.body || {};
    
    if (location.length > 0) {
      ...
    }
    

    【讨论】:

      【解决方案3】:

      这对于optional chaining 来说是一个很好的例子。类似于纳伦德拉的回答,你可以写..

      if (req?.body?.location) {
          const location = req.body.location;
      }
      

      这将检查每个属性的未定义,因此当其中一个属性未定义时不会导致您的应用程序崩溃。

      【讨论】:

        【解决方案4】:

        如果您一般需要请求验证,我可以向您强烈推荐 joi plugin。因此您可以将位置设置为必需参数,请参阅joi-docs

        【讨论】:

          猜你喜欢
          • 2020-10-19
          • 1970-01-01
          • 2021-04-14
          • 2019-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-27
          • 1970-01-01
          相关资源
          最近更新 更多