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

Express-validator误校验Cookie而非请求体的问题解决求助

问题解决:express-validator 校验嵌套字段始终报错的问题

问题原因

从错误信息里的location: 'cookies'可以看出,express-validator默认会在**所有请求位置(cookies、body、query、params等)**查找目标字段,当它在cookies中找不到applicant.name时,就直接抛出错误,完全忽略了存在于req.body中的数据。

解决方案

明确指定校验规则的查找位置为body,有两种实现方式:

方式一:修改checkSchema配置

在字段规则中添加location: 'body',告诉校验器只从请求体中查找该字段:

const validationSchema = checkSchema({
    'applicant.name': {
        exists: true,
        errorMessage: 'Name field is required',
        location: 'body' // 关键:指定从body获取字段
    },
});

方式二:使用body()链式校验(可选)

如果你更偏好链式写法,也可以替换成body()方法的校验逻辑,它默认只从请求体中查找字段:

const { body } = require('express-validator');

const validationSchema = [
    body('applicant.name')
        .exists()
        .withMessage('Name field is required')
];

额外注意

确保前端提交的表单数据格式正确:

  • 如果是传统表单提交,字段名需要写成applicant[name],这样后端才能解析出嵌套的applicant对象;
  • 如果是JSON格式提交,要设置请求头Content-Type: application/json,并且请求体是合法的JSON结构(比如{"applicant": {"name": "xxx"}})。

内容的提问来源于stack exchange,提问作者SadCoder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:38:12