Mongoose Schema 详解

阅读时长 4 分钟读完

什么是 Mongoose Schema?

Mongoose 是一个 Node.js 的框架,它提供了一种操作 MongoDB 数据库的方式。而 Mongoose Schema 就是用来描述 MongoDB 数据库中一个集合的结构的。

Mongoose Schema 可以让我们定义一个模式,模式里面可以包含属性的类型、验证规则、默认值等信息。这样就能在往数据库中插入数据时,对数据进行校验和格式化,防止数据混乱和格式错误。

如何定义 Mongoose Schema?

首先,需要在项目中引入 Mongoose 模块。

然后,就可以定义一个 Mongoose Schema 了。

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

----- ---------- - --- --------
  ----- -------
  ---- -------
  ------ -
    ----- -------
    --------- -----
    ------- ----
  -
---
展开代码

上面的代码定义了一个 UserSchema,它有三个属性,分别是 name、age 和 email。name 和 age 的类型分别为 String 和 Number,email 带有验证规则,表示这个属性是必填的,并且不能重复。

Mongoose Schema 的数据类型

Mongoose Schema 的数据类型包括:

  • String:字符串类型
  • Number:数字类型
  • Date:日期类型
  • Boolean:布尔类型
  • ObjectId:对象 ID 类型
  • Mixed:混合类型
  • Buffer:二进制类型

还可以使用数组来定义一个属性是数组类型的。例如:

Mongoose Schema 的验证规则

Mongoose Schema 的验证规则有很多种,可以验证属性是否必填、是否唯一、长度、正则表达式等。以下是常用的验证规则:

  • required:表示该属性必填
  • unique:表示该属性值不能重复
  • min/max:表示该属性的数字范围
  • minlength/maxlength:表示该属性的字符串长度范围
  • match:表示该属性需要符合正则表达式

例如:

以上表示 email 属性必填,不能重复,而且必须符合电子邮件地址格式。

Mongoose Schema 的钩子

Mongoose Schema 的钩子(Hooks)可以让我们在某些操作之前或之后添加一些额外的逻辑。

常用的钩子有 pre-save、post-save、pre-remove 等,在进行相应操作前或之后会调用对应的钩子函数。

例如:

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

---------------------- -------------- -
  -- --- ---------- ------
  -------
---
展开代码

以上代码表示,在保存 UserSchema 之前会调用 pre-save 钩子函数。

Mongoose Model

Mongoose Schema 只是用来描述 MongoDB 数据库中一个集合的结构,而 Mongoose Model 则是用来操作集合的。

我们可以使用 Mongoose Model 来插入、查询、删除和更新 MongoDB 数据库中的数据。

例如,我们可以通过以下方式创建一个 User 模型:

然后就可以使用这个模型对 MongoDB 数据库进行操作了:

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

--------------- ------- -- -
  -- ----- -
    -------------------
  - ---- -
    --------------------
  -
---
展开代码

以上代码表示插入一条 User 记录,并检查是否保存成功。

总结

Mongoose Schema 提供了一种很方便的方式来描述 MongoDB 数据库中集合的结构和定义验证规则,使得在往数据库中插入数据时,数据能够被有效校验和格式化。同时,Mongoose Model 还提供了一些方便的接口能够操作数据库中的数据。

使用 Mongoose Schema 可以让我们编写的代码更具可读性、可维护性,能够更好地满足项目的需求。

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

纠错
反馈

纠错反馈