Mongoose 中的 Schema 规则指南

阅读时长 5 分钟读完

Mongoose 是一个 Node.js 的 MongoDB 驱动程序,它提供了一种简单的方式来定义数据模型和操作 MongoDB 数据库。在 Mongoose 中,Schema 是在定义数据模型时用来描述数据结构的对象。在本文中,我们将详细介绍 Mongoose 中的 Schema 规则,包括类型、验证、默认值等方面的内容。

Schema 类型

在 Mongoose 中,Schema 支持以下数据类型:

  • String
  • Number
  • Date
  • Buffer
  • Boolean
  • Mixed
  • ObjectId
  • Array

下面是一个示例 Schema 定义:

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

在上面的示例中,我们定义了一个用户模型,它包含了 name、age、email、createdAt、friends 和 avatar 属性。其中,name 和 age 的类型分别为 String 和 Number,email 的类型为 String,并且必须存在且唯一,createdAt 的类型为 Date,并且默认值为当前时间,friends 的类型为字符串数组,avatar 的类型为 Buffer。

Schema 验证

在 Mongoose 中,Schema 支持以下验证规则:

  • required:字段必填。
  • min/max:数字的最小/最大值。
  • minlength/maxlength:字符串的最小/最大长度。
  • enum:枚举值。
  • match:正则表达式匹配。
  • validate:自定义验证函数。

下面是一个示例:

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

在上面的示例中,我们定义了一个用户模型,它包含了 name、age、gender、email 和 phone 属性。其中,name 必填且长度在 6 到 20 之间,age 的值必须在 18 到 99 之间,gender 必须是 male 或 female,email 必须符合正则表达式 /^\w-.]+@([\w-]+.)+[\w-]{2,4}$/,phone 必须符合自定义验证函数中的正则表达式。

Schema 默认值

在 Mongoose 中,Schema 支持以下默认值:

  • String/Number/Date:默认值为 null。
  • Boolean:默认值为 false。
  • ObjectId:默认值为 new ObjectId()。
  • Array:默认值为 []。

下面是一个示例:

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

在上面的示例中,我们定义了一个用户模型,它包含了 name、age、email、createdAt、friends、isAdmin 和 avatar 属性。其中,createdAt 的默认值为当前时间,friends 的默认值为 ['Tom', 'Jerry'],isAdmin 的默认值为 false。

总结

在本文中,我们介绍了 Mongoose 中的 Schema 规则,包括类型、验证和默认值。在实际开发中,我们可以根据业务需求来定义合适的 Schema,对数据进行有效的管理和操作。

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

纠错
反馈