You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:24:01