Uso express-validator para verificar mis campos de publicación, uno de mis campos debe ser un decimal o estar vacío. Usé este esquema:
request.checkBody({ 'product_price': { optional: true, isDecimal: { errorMessage: 'The product price must be a decimal' } } })El problema con este esquema es no validar mi publicación si product_price está vacío, incluso con "opcional: verdadero".
Debe configurar la opción checkFalsy como optional para permitir valores definidos pero vacíos:
request.checkBody({ 'product_price': { optional: { options: { checkFalsy: true } }, isDecimal: { errorMessage: 'The product price must be a decimal' } } });EDITAR : la documentación se ha movido desde que se publicó esta respuesta, ahora se puede encontrar aquí .
Lo que funcionó para mí fue usar req.checkBody('optionalParam', 'optionalParam must be a number').optional().isNumber();
En caso de que alguien esté usando el cuerpo express-validator . Puedes hacer lo siguiente
router.post('apiname', [ body('product_price').trim() .optional({ checkFalsy: true }) .isNumeric().withMessage('Only Decimals allowed'), ])