什么是 Virtuals
Virtuals 是 Mongoose 中的一个概念,它可以让你在模型中定义一些虚拟属性,这些属性不会被保存到数据库中,但是可以像普通属性一样被访问和使用。Virtuals 常用于将多个属性合并成一个属性,或者将一个属性拆分成多个属性。
如何使用 Virtuals
在 Mongoose 中定义 Virtuals 非常简单,我们只需要在模型中定义一个 getter 函数即可。下面是一个示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ---------- ------- --------- ------ --- --------------------------------------------- - ------ -------------- - - - - -------------- --- ----- ---- - ---------------------- ------------
上面的代码中,我们定义了一个名为 fullName
的 Virtuals,它将 firstName
和 lastName
合并成一个字符串返回。
我们可以像访问普通属性一样访问 Virtuals:
const user = new User({ firstName: 'John', lastName: 'Doe' }); console.log(user.fullName); // 'John Doe'
Virtuals 的应用场景
Virtuals 可以用于各种场景,这里介绍几个常见的应用场景。
1. 将多个属性合并成一个属性
这是 Virtuals 最常见的应用场景,比如上面的示例中合并 firstName
和 lastName
。
2. 将一个属性拆分成多个属性
有时候我们需要将一个属性拆分成多个属性,这也可以通过 Virtuals 实现。比如下面的示例中,我们将一个时间戳转换成年、月、日三个属性:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ------ ------- -------- ------- ---------- ---- --- ----------------------------------------- - ------ ----------------------------- --- ------------------------------------------ - ------ ------------------------- - -- --- ---------------------------------------- - ------ ------------------------- --- ----- ---- - ---------------------- ------------
3. 计算属性
有时候我们需要计算一些属性,这也可以通过 Virtuals 实现。比如下面的示例中,我们计算了一个用户的年龄:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ----- ------- --------- ---- --- ---------------------------------------- - ----- ---- - ---------- - ------------------------ ----- ------- - --- ----------- ------ --------------------------------- - ------ --- ----- ---- - ---------------------- ------------
总结
Virtuals 可以帮助我们在模型中定义一些虚拟属性,这些属性不会被保存到数据库中,但是可以像普通属性一样被访问和使用。Virtuals 可以用于将多个属性合并成一个属性,或者将一个属性拆分成多个属性,也可以用于计算属性。在使用 Virtuals 时,我们只需要在模型中定义一个 getter 函数即可。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6639a567d3423812e47d65aa