Mongoose 中的 Schema Types 使用详解

阅读时长 5 分钟读完

在使用 Mongoose 构建 MongoDB 数据库时,我们需要使用 mongoose.Schema() 创建 schema(数据表结构),其中需要指定每个字段的类型。Mongoose 提供了多种类型供我们选择,本文将对这些类型进行详细讲解,并附带示例代码。

String 类型

String 类型用于存储文本数据。在 Mongoose 中,我们可以指定其最大长度、默认值和正则表达式等属性。下面是一个示例:

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

在上面的例子中,我们定义了一个用户名(username)字段,其类型为 String。我们还指定了该字段的必填属性为 true,且最大长度为 20,最小长度为 6。默认值为 'guest',同时该字段的值必须与正则表达式 /^[a-zA-Z0-9_]+$/ 相匹配。

Number 类型

Number 类型用于存储数字数据。Mongoose 中提供了 integer,long 和 double 类型。下面是一个示例:

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

在上面的例子中,我们定义了一个价格(price)字段,其类型为 Number。我们还指定了该字段的必填属性为 true,且属性值必须为整数,同时取值范围为 0 到 100 之间。默认值为 10。

Date 类型

Date 类型用于存储日期数据。在 Mongoose 中,我们可以指定其存储格式、默认值和过期时间等属性。下面是一个示例:

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

在上面的例子中,我们定义了一个待办事项(title)字段和截止日期(dueDate)字段。截止日期必填且默认值为当前时间,过期时间为 24 小时后。

Boolean 类型

Boolean 类型用于存储布尔类型数据。下面是一个示例:

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

在上面的例子中,我们定义了一个产品名称(name)字段和是否打折(onSale)字段。是否打折默认为 false。

ObjectId 类型

ObjectId 类型用于存储 MongoDB 中的文档 id。下面是一个示例:

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

在上面的例子中,我们定义了一个用户(user)字段和一个产品列表(products)字段。这两个字段的类型都是 ObjectId,且需引用到其他文档中。

Array 类型

Array 类型用于存储数组数据。下面是一个示例:

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

在上面的例子中,我们定义了一个公司名称(name)字段和员工列表(employees)字段。员工信息以对象方式存储在数组中。

Buffer 类型

Buffer 类型用于存储二进制数据。下面是一个示例:

在上面的例子中,我们定义了一个文件名称(name)字段和文件数据(data)字段。文件数据以 Buffer 类型存储。

Map 类型

Map 类型用于存储键值对类型数据。下面是一个示例:

在上面的例子中,我们定义了一个学生姓名(name)字段和学生成绩(grades)字段。学生成绩以键值对的形式存储在 Map 类型中。

除了上述 Mongoose 中提供的数据类型,我们还可以自定义类型,用于存储复合结构的数据等。

总结

在使用 Mongoose 进行 Node.js 后端开发时,使用 schema 是必不可少的。而 schema 的类型选择的合理性,有可能影响到数据库的设计和性能,所以了解每种类型的用途和属性是非常重要的,本文详细讲解了每一种类型的使用方法,供读者参考。

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

纠错
反馈