Mongoose 是 Node.js 的一款优秀的 Object Document Mapping (ODM) 框架,用于将 MongoDB 中的文档映射到应用程序中的 JavaScript 对象。在 Mongoose 中,预定义验证器是数据验证的一个重要部分,通过使用预定义验证器,可以确保存入数据库的数据是符合特定规则的。本文将深入讲解 Mongoose 的预定义验证器,帮助您更好地使用它进行数据验证。
预定义验证器
Mongoose 中默认提供了一系列预设验证器,涵盖了基础的数据验证场景。以下是其中的一些验证器:
required
: 字段是否必须。min/max
: 数字类型的数值是否小于/大于提供的参数。enum
: 字段是否必须是一个制定枚举值里的其中一个。match
: 字段是否匹配提供的正则表达式。maxlength/minlength
: 字段是否超过/小于提供的最大/最小长度。validate
: 自定义验证器函数。
required 验证器
required
验证器用于验证字段是否为必填项。在 Mongoose 中,使用 required
验证器需要为需要验证的字段设置属性 { type: type, required: true }
。以下是一个使用 required
验证器的示例:
const userSchema = new mongoose.Schema({ name: { type: String, required: true }, age: Number });
min/max 验证器
min/max
验证器用于验证数字型字段的值是否小于或大于指定的最大或最小值。以下是一个使用 min/max
验证器的示例:
const userSchema = new mongoose.Schema({ age: { type: Number, min: 13, max: 120 } });
enum 验证器
enum
验证器用于验证字段的值是否属于一个指定的枚举值列表。以下是一个使用 enum
验证器的示例:
const userSchema = new mongoose.Schema({ gender: { type: String, enum: ['male', 'female'] } });
match 验证器
match
验证器用于验证字段值是否符合指定的正则表达式模式。以下是一个使用 match
验证器的示例:
const userSchema = new mongoose.Schema({ email: { type: String, match: /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/ } });
maxlength/minlength 验证器
maxlength/minlength
验证器用于验证字符串型字段的长度是否超出或小于指定的最大或最小值。以下是一个使用 maxlength/minlength
验证器的示例:
const userSchema = new mongoose.Schema({ name: { type: String, maxlength: 20, minlength: 5 } });
validate 验证器
有时我们需要验证更加复杂的数据模型,这时候可以使用 validate
验证器。 validate
验证器可以接受一个自定义的验证函数,并在其中进行复杂的验证逻辑。以下是一个使用 validate
验证器的示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- --------- - ----- ------- --------- - ---------- -------- --- - ------ ------------------------------------------------- -- -------- ------------------------------ - --- - - ---
总结
本文详细介绍了 Mongoose 中的预定义验证器,以及在项目开发中使用预设验证器的方法和示例代码。通过正确使用预定义验证器,在提交数据到 MongoDB 前先进行数据验证,可以大大提高开发效率和代码安全性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6454daff968c7c53b0898a48