Node.js Mongoose Schema使用enum校验时是否区分大小写?
Mongoose enum枚举字段校验的大小写规则
- Mongoose内置的String类型enum校验默认严格区分大小写,校验逻辑是对传入值和枚举列表做精确等值匹配,不会自动做大小写归一化处理。
- 你给出的示例中,
animal字段允许的枚举值只有全小写的'cat'、'dog',传入全大写的'CAT'时,会被判定为不符合枚举规则,执行save()保存操作时会直接抛出ValidationError校验错误,实例不会被正常存入数据库。
如果业务场景需要支持不区分大小写的枚举匹配,可以弃用内置enum配置,改用自定义校验规则实现,参考代码:
const mySchema = new Schema({ animal: { type: String, validate: { validator: function(value) { // 传入值统一转小写后再和枚举列表匹配 return ['cat', 'dog'].includes(value.toLowerCase()); }, message: 'animal字段取值不在允许范围内' } } });
内容的提问来源于stack exchange,提问作者LordZuko
相关产品推荐
相关产品推荐

