如何使用express validator验证请求体对象内嵌套的对象数组
实现方案
你可以通过带父级路径的通配符匹配嵌套数组内的元素,不需要自定义校验规则,校验代码如下:
const { body } = require('express-validator'); // 校验规则可直接写入路由参数中 const validateFavoriteBooks = [ // 先校验favoriteBooks字段必须存在且为数组格式 body('favoriteBooks') .exists() .isArray() .withMessage('favoriteBooks必须是数组类型'), // 匹配favoriteBooks数组下所有对象的name字段 body('favoriteBooks.*.name') .exists() .notEmpty() .withMessage('name不能为空') .isLength({ max: 256 }) .withMessage('name长度不能超过256'), // 匹配favoriteBooks数组下所有对象的price字段 body('favoriteBooks.*.price') .exists() .notEmpty() .withMessage('price不能为空') ]
这种写法和你校验根数组时用*.name的逻辑完全一致,仅需在通配符前加上嵌套数组的父字段名favoriteBooks,就能精准匹配到内层数组的每个对象字段,符合你不使用自定义校验方法的要求。
内容的提问来源于stack exchange,提问作者Nazmul Haque
相关产品推荐
相关产品推荐

