Mongoose 中各种 validate 校验器详解:让你数据更加安全可靠

阅读时长 5 分钟读完

Mongoose 是 Node.js 中最流行的 MongoDB ODM(Object Data Management)库。在Mongoose 中,你可以通过 Schema 和 Model 来定义和操作 MongoDB 文档,其中包括一系列的 validate 校验器,可以用来约束数据的有效性。本文将为你详细解释 Mongoose 中的各种 validate 校验器,让你的数据更加安全可靠。

Mongoose validate 校验器

在 Mongoose 中,validate 校验器是一个选项,可以在 SchemaType API 中使用。它允许在将数据存到数据库之前对数据进行检查,并阻止无效数据的入库。

validate 校验器有两种风格:同步和异步。同步 validator 是一个两端返回 true 或 false 来指明数据是否有效的函数;反之,异步 validator 接受一个回调函数,它会返回一个 promise 或一个错误信息(如果数据无效的话)。

validate 校验器的使用很灵活,你可以在任何级别上进行使用。你可以在 Schema 中定义全局校验器来针对所有没有定义 validate 选项的 SchemaType 来进行校验。你也可以为每个 individual SchemaType 定义自己的校验器。

以下是 Mongoose 中的一些常用 validate 校验器,让我们来看一看它们的使用方式:

1. required 校验器

required 校验器用来验证一个文档对象是否具有该 SchemaType。如果不具备,则返回验证失败。示例代码如下:

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

在上面的代码中,我们定义了一个 bookSchema,包含了四个字段(title、author、publish、price)。这里使用了 required 校验器,即每个字段都必须设置。如果有任何一个字段未设置,在保存到数据库之前, validate 校验器会检查这个文档是否具备了所有的必需字段。

2. minlength 和 maxlength 校验器

minlength 和 maxlength 校验器用来验证字符串长度是否满足要求。示例代码如下:

在上面的代码中,我们定义了一个 userSchema,包含了一个字符串类型的 name 字段。使用 minlength 和 maxlength 校验器,指定了 name 字段值的长度要求,只有在符合要求时才会保存到数据库中。

3. match 校验器

match 校验器用来验证字符串是否符合指定的正则表达式规则。示例代码如下:

在上面的代码中,我们定义了一个 userSchema,包含了一个字符串类型的 email 字段。使用 match 校验器,指定了 email 字段值的格式规则。只有在符合规则时才会保存到数据库中。

4. enum 校验器

enum 校验器用来保证值是固定的集合中的一个。示例代码如下:

在上面的代码中,我们定义了一个 userSchema,包含了一个字符串类型的 role 字段。使用 enum 校验器,指定了 role 字段值只能从数组 ['user', 'admin', 'contributor'] 中选择,否则会返回验证失败。

5. validate 校验器

使用 validate 校验器,你可以创建一个自定义的同步或异步校验器来验证一个字段。例如:

上面的代码中,我们定义了一个自定义的 validate 校验器来检查 username 值是否具有三个或更多的字符。

可以看到,validate 校验器允许使用函数来进行验证。这个函数应该返回 true 或 false 进行表示验证成功或者失败。同时,如果输入的信息无效,这个函数可以返回一个提示信息,如果返回的是一个非 null 或者空字符串,则会被作为验证失败的原因,mongoose 会将其包装为一个 ValidationError。

结论

在本文中,我们详细介绍了 Mongoose 中的 validate 校验器,这些校验器的使用可使你的数据更加安全可靠。当你使用 Mongoose 创建 ODM 时,请务必考虑使用这些校验器来约束数据的有效性。我们深入探讨了常用的 validate 校验器及它们的使用方式,播下了构建高质量 ODM 库的基本功。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67497a6ba1ce00635461c708

纠错
反馈