在使用 Mongoose 进行 MongoDB 数据库操作时,可以通过 Validators 来对 Schema 中的字段进行验证。Validators 可以确保数据的正确性和完整性,避免数据库中出现不合法的数据。本文将详细介绍 Mongoose 中的 Validators,包括常用的验证器类型和示例代码。
Validators 的基本概念
Validators 是 Mongoose 中用于验证 Schema 中字段值的一种机制。Validators 可以对字段值进行各种类型的验证,包括字符串、数字、日期、布尔值等等。在 Schema 中定义字段时,可以通过 Validators 来指定该字段的验证规则。
Validators 可以分为两类:内置验证器和自定义验证器。内置验证器是 Mongoose 已经提供的一些常用验证器,包括 required
、min
、max
、enum
等等。自定义验证器则是开发者自己编写的验证器函数,用于验证某些特定的字段。
内置验证器
required
required
验证器用于验证字段是否必填。如果某个字段必须填写,可以在 Schema 中使用 required
验证器来指定该字段为必填项。
const userSchema = new mongoose.Schema({ name: { type: String, required: true }, age: Number })
上述代码中,name
字段被指定为必填项,如果创建用户时没有填写该字段,将会抛出错误。
min 和 max
min
和 max
验证器用于验证数字字段的最小值和最大值。
const userSchema = new mongoose.Schema({ age: { type: Number, min: 18, max: 100 } })
上述代码中,age
字段被指定为数字类型,并且最小值为 18,最大值为 100。如果创建用户时填写的年龄小于 18 或大于 100,将会抛出错误。
enum
enum
验证器用于验证字符串字段是否在指定的枚举值中。
const userSchema = new mongoose.Schema({ gender: { type: String, enum: ['male', 'female'] } })
上述代码中,gender
字段被指定为字符串类型,并且只能取值为 'male'
或 'female'
。如果创建用户时填写的性别不在指定的枚举值中,将会抛出错误。
match
match
验证器用于验证字符串字段是否符合指定的正则表达式。
const userSchema = new mongoose.Schema({ email: { type: String, match: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/ } })
上述代码中,email
字段被指定为字符串类型,并且必须符合指定的正则表达式。如果创建用户时填写的邮箱不符合正则表达式,将会抛出错误。
自定义验证器
除了内置验证器之外,开发者还可以自定义验证器函数来对某些特定的字段进行验证。
自定义验证器函数需要返回一个布尔值,表示该字段是否合法。如果返回 false
,将会抛出错误。
-- -------------------- ---- ------- ----- ---------- - --- ----------------- --------- - ----- ------- --------- - ---------- ----------- - ------ - -- -------- -- - -- -------- ----------- - -- - - --
上述代码中,password
字段被指定为字符串类型,并且使用了自定义验证器函数。该函数验证密码长度是否大于等于 6 位,如果不符合要求将会抛出错误。
总结
Validators 是 Mongoose 中用于验证字段值的机制,可以确保数据的正确性和完整性。Validators 分为内置验证器和自定义验证器,开发者可以根据需求选择合适的验证器类型。在实际开发中,合理使用 Validators 可以避免数据库中出现不合法的数据,提高系统的稳定性和安全性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65ced34fadd4f0e0ff8287ee