我使用express-validator来检查我的帖子字段,我的一个字段必须是小数或空。我使用了这个架构:
request.checkBody({
'product_price': {
optional: true,
isDecimal: {
errorMessage: 'The product price must be a decimal'
}
}
})
这个架构的问题是如果product_price为空则不验证我的帖子,即使是“optional:true”。
答案 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'),
])