Mongoose 中的 Schema 和 Model 解析:如何实现业务逻辑

阅读时长 6 分钟读完

作为 Node.js 开发者,我们时常需要处理数据持久化,并与数据存储进行交互。Mongoose 是一个基于 Node.js 平台的 MongoDB ODM(Object Document Model)工具包,可以使开发者更方便的与 MongoDB 数据库进行交互。在 Mongoose 中,Schema 和 Model 是两个关键的概念,本文将会对这两个概念进行详细解析,以帮助初学者更好的掌握 Mongoose 的使用。

什么是 Schema

Schema 可以理解为数据库的模板或者规则,用于约束数据的格式。在 Mongoose 中,Schema 可以定义集合中的字段类型、默认值、验证等。下面我们通过一个示例来演示如何定义一个 Schema:

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

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

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

在上面的代码中,我们定义了一个 userSchema,该 Schema 包含了四个字段,分别是 name、email、age、createdAt,并且每个字段都定义了类型和一些属性。

什么是 Model

Model 是由 Schema 编译生成的构造函数,可以进行 CRUD 操作。在 Mongoose 中,Model 可以看作是数据库中的集合。下面我们通过一个示例来演示如何使用 Schema 创建 Model:

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

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

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

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

在上面的代码中,我们使用 mongoose.model 方法来创建一个名为 User 的 Model,该 Model 的 Schema 对象为 userSchema。

如何实现业务逻辑

Model 是实现业务逻辑的核心部分,开发者可以在 Model 中定义各种业务逻辑,例如增删改查、数据验证、钩子函数等。下面我们通过一个示例来演示如何在 Model 中实现数据验证的功能:

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

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

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

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

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

在上面的代码中,我们使用 pre 钩子函数来定义数据验证逻辑,当保存数据之前,会先执行该钩子函数中的 validateUser 方法进行数据验证。

示例代码

下面是完整的示例代码,可以参考进行学习:

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

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

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

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

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

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

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

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

总结

本文针对 Mongoose 中的 Schema 和 Model 进行了详细解析,并且给出了实现业务逻辑的示例。通过本文的学习,读者可以更好的掌握 Mongoose 的使用,并且将其应用到实际的开发中。

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

纠错
反馈