使用 Mongoose 进行数据验证 - 避免无效数据的插入

阅读时长 4 分钟读完

Mongoose 是一款优秀的 Node.js ORM 框架,它提供了丰富的功能和灵活的 API。其中一个关键特性是数据验证,在插入或者更新数据的时候,Mongoose 会自动检查数据的合法性。在本文中,我们将介绍如何使用 Mongoose 的数据验证功能,避免无效数据被插入到数据库中。

Mongoose 数据验证简介

在使用 Mongoose 进行 CRUD 操作的时候,我们有时需要对数据进行验证,确保数据的合法性。Mongoose 的数据验证可以在数据模型中定义验证规则,一旦数据不符合规则,就无法被插入到数据库中。这样的好处是可以避免无效数据被插入到数据库中,保证数据质量。

Mongoose 支持四种验证类型,分别为:required,minlength,maxlength 和 enum。其中,required 表示字段必须存在,minlength 和 maxlength 分别表示字符串字段的最小长度和最大长度,enum 表示字段必须是指定的值之一。

下面是一个简单的例子,展示了如何使用 Mongoose 进行数据验证:

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

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

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

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

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

在这个例子中,我们定义了一个用户数据模型,定义了三个字段:name,age 和 gender。其中,name 和 age 都是必须的,并且分别设置了最小值和最大值。gender 是一个枚举值,只能是 male 或者 female 之一。

在创建一个新的用户时,我们省略了 gender 字段,此时 Mongoose 会抛出一个错误,因为 gender 是必须的字段。如果我们将 age 设置为 17,则也会抛出一个错误,因为 age 的最小值是 18。

自定义验证

除了支持四种内置的验证类型外,Mongoose 还支持通过自定义函数进行验证。自定义函数可以接受两个参数:要验证的值和验证失败时的错误信息,如果值不符合要求,则需要调用回调函数,并传入错误信息,否则调用回调函数并传入 undefined。

下面是一个自定义验证的例子:

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

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

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

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

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

在这个例子中,我们定义了一个 person 数据模型,其中 age 字段添加了一个自定义验证函数,用于验证年龄是否大于等于 18 岁。因为 person 对象的 age 字段值为 11,所以保存操作会失败,并抛出一个错误,包含了自定义错误信息。

总结

Mongoose 的数据验证功能是一个非常有用的特性,可以帮助我们避免无效数据被插入到数据库中。我们可以使用内置类型或自定义函数进行验证,保证数据的合法性。在实际开发中,我们建议在数据模型中定义验证规则,这样可以使代码更加清晰易懂,并且验证功能也能够与其他代码协调工作。

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

纠错
反馈