Mongoose 中的 Validators 详解

在使用 Mongoose 进行 MongoDB 数据库操作时,可以通过 Validators 来对 Schema 中的字段进行验证。Validators 可以确保数据的正确性和完整性,避免数据库中出现不合法的数据。本文将详细介绍 Mongoose 中的 Validators,包括常用的验证器类型和示例代码。

Validators 的基本概念

Validators 是 Mongoose 中用于验证 Schema 中字段值的一种机制。Validators 可以对字段值进行各种类型的验证,包括字符串、数字、日期、布尔值等等。在 Schema 中定义字段时,可以通过 Validators 来指定该字段的验证规则。

Validators 可以分为两类:内置验证器和自定义验证器。内置验证器是 Mongoose 已经提供的一些常用验证器,包括 requiredminmaxenum 等等。自定义验证器则是开发者自己编写的验证器函数,用于验证某些特定的字段。

内置验证器

required

required 验证器用于验证字段是否必填。如果某个字段必须填写,可以在 Schema 中使用 required 验证器来指定该字段为必填项。

----- ---------- - --- -----------------
  ----- -
    ----- -------
    --------- ----
  --
  ---- ------
--

上述代码中,name 字段被指定为必填项,如果创建用户时没有填写该字段,将会抛出错误。

min 和 max

minmax 验证器用于验证数字字段的最小值和最大值。

----- ---------- - --- -----------------
  ---- -
    ----- -------
    ---- ---
    ---- ---
  -
--

上述代码中,age 字段被指定为数字类型,并且最小值为 18,最大值为 100。如果创建用户时填写的年龄小于 18 或大于 100,将会抛出错误。

enum

enum 验证器用于验证字符串字段是否在指定的枚举值中。

----- ---------- - --- -----------------
  ------- -
    ----- -------
    ----- -------- ---------
  -
--

上述代码中,gender 字段被指定为字符串类型,并且只能取值为 'male''female'。如果创建用户时填写的性别不在指定的枚举值中,将会抛出错误。

match

match 验证器用于验证字符串字段是否符合指定的正则表达式。

----- ---------- - --- -----------------
  ------ -
    ----- -------
    ------ ---------------------------------------
  -
--

上述代码中,email 字段被指定为字符串类型,并且必须符合指定的正则表达式。如果创建用户时填写的邮箱不符合正则表达式,将会抛出错误。

自定义验证器

除了内置验证器之外,开发者还可以自定义验证器函数来对某些特定的字段进行验证。

自定义验证器函数需要返回一个布尔值,表示该字段是否合法。如果返回 false,将会抛出错误。

----- ---------- - --- -----------------
  --------- -
    ----- -------
    --------- -
      ---------- ----------- -
        ------ - -- -------- -- -
      --
      -------- ----------- - --
    -
  -
--

上述代码中,password 字段被指定为字符串类型,并且使用了自定义验证器函数。该函数验证密码长度是否大于等于 6 位,如果不符合要求将会抛出错误。

总结

Validators 是 Mongoose 中用于验证字段值的机制,可以确保数据的正确性和完整性。Validators 分为内置验证器和自定义验证器,开发者可以根据需求选择合适的验证器类型。在实际开发中,合理使用 Validators 可以避免数据库中出现不合法的数据,提高系统的稳定性和安全性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65ced34fadd4f0e0ff8287ee