如何在 Mongoose 中使用 Virtuals

什么是 Virtuals

Virtuals 是 Mongoose 中的一个概念,它可以让你在模型中定义一些虚拟属性,这些属性不会被保存到数据库中,但是可以像普通属性一样被访问和使用。Virtuals 常用于将多个属性合并成一个属性,或者将一个属性拆分成多个属性。

如何使用 Virtuals

在 Mongoose 中定义 Virtuals 非常简单,我们只需要在模型中定义一个 getter 函数即可。下面是一个示例:

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

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

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

上面的代码中,我们定义了一个名为 fullName 的 Virtuals,它将 firstNamelastName 合并成一个字符串返回。

我们可以像访问普通属性一样访问 Virtuals:

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

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

Virtuals 的应用场景

Virtuals 可以用于各种场景,这里介绍几个常见的应用场景。

1. 将多个属性合并成一个属性

这是 Virtuals 最常见的应用场景,比如上面的示例中合并 firstNamelastName

2. 将一个属性拆分成多个属性

有时候我们需要将一个属性拆分成多个属性,这也可以通过 Virtuals 实现。比如下面的示例中,我们将一个时间戳转换成年、月、日三个属性:

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

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

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

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

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

3. 计算属性

有时候我们需要计算一些属性,这也可以通过 Virtuals 实现。比如下面的示例中,我们计算了一个用户的年龄:

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

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

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

总结

Virtuals 可以帮助我们在模型中定义一些虚拟属性,这些属性不会被保存到数据库中,但是可以像普通属性一样被访问和使用。Virtuals 可以用于将多个属性合并成一个属性,或者将一个属性拆分成多个属性,也可以用于计算属性。在使用 Virtuals 时,我们只需要在模型中定义一个 getter 函数即可。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6639a567d3423812e47d65aa