Mongoose 中指定 default 值最佳实践

阅读时长 6 分钟读完

在使用 Mongoose 构建 Node.js 应用时,经常需要定义模型的默认值。默认值可以在创建文档时自动填充,避免了手动填充的麻烦。本文将介绍 Mongoose 中指定 default 值的最佳实践,并提供示例代码。

1. 指定默认值的方式

Mongoose 提供了两种指定默认值的方式:

  1. 在 Schema 中定义 default 属性
  2. 在文档创建时指定默认值

1.1 在 Schema 中定义 default 属性

在 Schema 中定义 default 属性可以为模型中的所有文档指定默认值。例如,我们可以定义一个名为 User 的模型,并为 name 字段指定默认值:

在创建 User 文档时,如果没有指定 name 字段的值,name 字段的默认值将为 Anonymous

1.2 在文档创建时指定默认值

在创建文档时指定默认值可以为每个文档指定不同的默认值。例如,我们可以创建一个名为 User 的模型,并在创建文档时指定 name 字段的默认值:

在这个例子中,name 字段的默认值将为 John,而不是在模型中定义的 Anonymous

2. 最佳实践

在指定默认值时,我们需要遵循以下最佳实践:

  1. 为每个字段指定默认值
  2. 使用函数指定默认值,而不是直接指定值
  3. 避免使用引用类型作为默认值

2.1 为每个字段指定默认值

为每个字段指定默认值可以避免出现未定义的字段。例如,我们可以为 User 模型中的每个字段指定默认值:

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

在创建 User 文档时,如果没有指定 address 字段的值,address 字段的默认值将为 ''

2.2 使用函数指定默认值,而不是直接指定值

使用函数指定默认值可以避免出现引用类型的问题。例如,我们可以为 User 模型中的 createdAt 字段指定默认值:

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

在这个例子中,createdAt 字段的默认值将为当前时间,而不是在模型中定义的字符串。

2.3 避免使用引用类型作为默认值

引用类型作为默认值可能会导致意外的结果。例如,我们可以为 User 模型中的 friends 字段指定默认值:

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

在这个例子中,friends 字段的默认值将为一个空数组。如果我们在创建文档时使用相同的数组作为默认值,那么所有文档的 friends 字段将指向同一个数组。这可能会导致意外的结果,例如一个文档的 friends 字段被修改后,其他文档的 friends 字段也会被修改。

为了避免这种情况,我们应该避免使用引用类型作为默认值。如果需要为引用类型指定默认值,可以使用函数指定默认值,并返回一个新的引用类型。

3. 示例代码

下面是一个完整的示例代码:

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

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

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

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

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

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

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

在这个例子中,我们创建了一个名为 User 的模型,并为 nameagecreatedAtfriends 字段指定了默认值。我们还创建了两个 User 文档,并在创建文档时指定了不同的默认值。最后,我们打印了这两个文档的内容。

4. 总结

在 Mongoose 中指定默认值是一个非常有用的功能。本文介绍了在 Mongoose 中指定默认值的最佳实践,并提供了示例代码。通过遵循这些最佳实践,我们可以更好地管理我们的文档,并避免出现意外的结果。

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

纠错
反馈