Mongoose 中的自动填充和验证方法详解及使用场景

阅读时长 9 分钟读完

Mongoose 是一个在 Node.js 环境中操作 MongoDB 数据库的优秀工具,它提供了许多方便的 API,可以帮助我们快速地构建和操作 MongoDB 数据库。其中,自动填充和验证方法是 Mongoose 中非常重要的两个功能,它们可以帮助我们自动填充数据并验证数据的合法性,极大地提高了我们的开发效率。本文将详细介绍 Mongoose 中的自动填充和验证方法,并给出一些使用场景和示例代码。

自动填充

自动填充是指在创建或更新文档时,自动填充一些字段的值,使得这些字段的值不需要手动输入,从而减少了输入的工作量和错误的可能性。在 Mongoose 中,可以通过定义 Schema 的时候,使用 defaultsetget 等方法来实现自动填充功能。

default 方法

default 方法用于设置字段的默认值,当创建文档时,如果没有为该字段指定值,则会自动使用该默认值。例如,下面的代码中,定义了一个名为 UserSchema 的 Schema,其中 age 字段的默认值为 18

在创建文档时,如果没有为 age 指定值,则会自动使用默认值 18

set 和 get 方法

setget 方法分别用于设置和获取字段的值,在设置字段的值时,可以对该值进行一些处理,从而实现自动填充的功能。例如,下面的代码中,定义了一个名为 BookSchema 的 Schema,其中 price 字段的值为人民币,但是在存储到数据库中时,需要将其转换为美元:

在获取 price 字段的值时,会自动将其转换为美元:

在设置 price 字段的值时,会自动将其转换为人民币:

验证方法

验证方法是指在创建或更新文档时,对文档的字段进行验证,确保其满足特定的要求。在 Mongoose 中,可以通过定义 Schema 的时候,使用 requiredminmaxenum 等方法来实现验证功能。

required 方法

required 方法用于指定字段是否必填,如果某个字段必填,但是创建文档时没有为该字段指定值,则会抛出异常。例如,下面的代码中,定义了一个名为 ArticleSchema 的 Schema,其中 title 字段必填:

在创建文档时,如果没有为 title 指定值,则会抛出异常:

min 和 max 方法

minmax 方法分别用于指定字段的最小值和最大值,如果某个字段的值小于最小值或大于最大值,则会抛出异常。例如,下面的代码中,定义了一个名为 ProductSchema 的 Schema,其中 price 字段的值必须大于等于 0

在创建文档时,如果 price 字段的值小于 0,则会抛出异常:

enum 方法

enum 方法用于指定字段的值必须是某个预定义的值。例如,下面的代码中,定义了一个名为 OrderSchema 的 Schema,其中 status 字段的值必须是 pendingprocessingcompleted 中的一个:

在创建文档时,如果 status 字段的值不是 pendingprocessingcompleted 中的一个,则会抛出异常:

使用场景

自动填充和验证方法在实际开发中有许多应用场景,下面列举了几个常见的场景:

自动填充

  • 在创建用户时,自动为用户生成一个唯一的 ID。
  • 在创建文章时,自动为文章的创建时间和更新时间赋值。
  • 在创建商品时,自动为商品的库存和销量赋值。

验证方法

  • 在创建或更新用户时,验证用户名和密码是否符合规范。
  • 在创建或更新文章时,验证标题和内容是否符合规范。
  • 在创建或更新商品时,验证价格和描述是否符合规范。

示例代码

下面是一个完整的示例代码,包含了自动填充和验证方法的使用:

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

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

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

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

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

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

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

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

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

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

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

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

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

以上代码演示了自动填充和验证方法的基本用法,读者可以根据自己的需要进行扩展。

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

纠错
反馈