Mongoose 中 Schema 的基本应用场景

阅读时长 4 分钟读完

在 Node.js 的后端开发中,Mongoose 是最常用的 MongoDB 数据库管理工具。Mongoose 中的 Schema 是其最核心的组件之一,它是用来定义 MongoDB 数据库集合中文档的格式,约束文档字段及其数据类型的。

Schema 的基本使用

我们可以通过以下代码来创建一个简单的用户信息的 Schema:

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

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

以上的代码定义了一个名为 userSchema 的 Schema,该 Schema 拥有四个属性:nameemailage、以及两个系统自动维护的 createdAtupdatedAt。类型也分别对应了字符串、数字和日期。

数据类型及验证

在 Mongoose 中,Schema 支持多种数据类型,如字符串、数字、日期、布尔值、数组、甚至嵌套对象等。我们可以通过以下代码来定义一个包含数组和嵌套对象的 Schema:

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

为了保证存储的数据符合定义的数据类型,Schema 还提供了默认的数据验证机制。我们可以在定义 Schema 时添加验证规则,例如对于 email 字段:

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

其中 required 选项表示该字段必须存在,unique 选项表示该字段唯一,match 选项表示该字段符合规则表达式。

Schema 方法与静态方法

Mongoose 中的 Schema 还可以定义自己的方法。例如,我们可以定义一个 isAdult 方法,用来判断一个人是否成年:

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

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

然后我们就可以在使用该 Schema 的文档中调用 isAdult 方法了。

除了实例方法,Schema 还支持定义静态方法,这些方法可以在 Model 层中被调用。例如,定义一个静态方法 findByName 用来查询用户姓名:

该方法可以在使用该 Schema 的 Model 层中被调用,例如:

总结

在 Node.js 后端开发中,Mongoose 中的 Schema 是使用MongoDB数据库时非常重要的组件,它能够帮助我们定义MongoDB的文档类型、字段规则以及验证方法等,使得数据库的操作和使用更加可控、简洁。在了解了 Schema 的基本使用、数据类型及验证、自定义方法和静态方法等这些核心内容之后,我们就可以更加灵活的使用 Mongoose 操作 MongoDB 了。

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

纠错
反馈