空字符串是否匹配MongoDB必填字段Schema?报错如何解决?
错误原因
你的MongoDB Schema中,demoProperty1字段被设置为type: String且required: true,而MongoDB的默认验证规则会将空字符串""判定为不符合必填要求——这里的必填不仅要求字段存在,还要求它是非空的有效字符串。你创建文档时传入了空字符串,触发了Schema的验证逻辑,因此抛出ValidationError。
解决方法
根据你的业务需求选择以下方案:
- 允许空字符串的场景:
修改Schema,要么取消必填限制,要么添加自定义验证器允许空字符串:// 方案1:取消必填限制 const DemoSchema: Schema = new Schema({ demoProperty1: { type: String } }); // 方案2:自定义验证器,允许空字符串但要求字段存在 const DemoSchema: Schema = new Schema({ demoProperty1: { type: String, required: true, validator: (v) => v !== undefined } }); - 不允许空字符串的场景:
创建文档时传入非空的有效字符串,示例:const savedDemo = await this.demoModel.create({demoProperty1: "实际业务内容"});
内容的提问来源于stack exchange,提问作者AkiZukiLenn
相关产品推荐
相关产品推荐

