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

Mongoose Schema校验异常求助:仅传部分必填项未触发校验

问题根源:Schema定义语法错误

你碰到的这个问题本质是Mongoose Schema的参数传递方式写错了,我来给你拆解清楚:

你现在的代码把每个字段都单独包装成对象传给mongoose.Schema()了:

mongoose.Schema( 
  { companyName: { type: String, required: true } }, 
  { companyEmail: { type: String, required: true } }, 
  { companySite: { type: String, required: true } }
)

但Mongoose的Schema构造函数只认两个核心参数:

  1. 第一个参数:包含所有字段定义的单一对象
  2. 第二个参数:Schema的配置选项(比如timestamps、collection这类全局设置)

你后面的两个对象会被当成Schema的配置选项处理,根本不会被识别成字段定义——这就是为什么companyEmail和companySite标记了必填却不触发校验的原因。


修复方案:合并字段到同一个对象里

把所有字段定义放到同一个对象中,这才是Mongoose Schema的正确写法:

mongoose.Schema({
  companyName: { type: String, required: true },
  companyEmail: { type: String, required: true },
  companySite: { type: String, required: true }
})

验证修复效果

修改完再用Postman测试:

  • 提交空对象:会同时抛出三个字段的必填错误
  • 只传companyName:会触发companyEmail和companySite的必填校验,返回对应的错误提示

这样就能完全符合你预期的校验逻辑了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:45:11