Node Js Express验证器如果字段不为空,则检查字段是否仅为数字

时间:2017-04-23 12:58:05

标签: node.js express

我使用express-validator来检查我的帖子字段,我的一个字段必须是小数或空。我使用了这个架构:

request.checkBody({ 
        'product_price': {
            optional: true,
            isDecimal: {
                errorMessage: 'The product price must be a decimal'
            }
        }
})

这个架构的问题是如果product_price为空则不验证我的帖子,即使是“optional:true”。

3 个答案:

答案 0 :(得分:7)

您需要为optional设置checkFalsy选项,以允许定义但空的值:

request.checkBody({ 
  'product_price': {
    optional: {
      options: { checkFalsy: true }
    },
    isDecimal: {
      errorMessage: 'The product price must be a decimal'
    }
  }
});

编辑:自发布此答案后文档已被移动,现在可以找到它here

答案 1 :(得分:0)

对我有用的是使用req.checkBody('optionalParam', 'optionalParam must be a number').optional().isNumber();

答案 2 :(得分:0)

如果有人使用express-validator正文。您可以执行以下操作

router.post('apiname', [
  body('product_price').trim()
    .optional({ checkFalsy: true })
    .isNumeric().withMessage('Only Decimals allowed'),
])