Mongoose 中如何使用 Virtual 虚拟属性
Mongoose 是一个 MongoDB 的对象模型工具库,在 Node.js 应用中可以用来方便地定义数据结构,处理基于 MongoDB 数据库的映射,以及执行查询和操作数据库。Virtual 属性是 Mongoose 中一个非常有用的功能,它可以让我们在查询数据库时方便地加入一些不在数据库中实际存在的属性,使得我们的数据在前端的展示和处理更加灵活方便。
Virtual 属性是什么?
Virtual 属性是一种 Mongoose 中的虚拟属性,它只存在于 Model 层,不会在数据库中实际存储,但可以在查询时根据我们的定义计算解析出来。比如,我们定义了一个为 fullName 的 Virtual 属性,我们查询数据时就可以直接拿到一个计算出来的 fullName 值。
怎样使用 Virtual 属性?
使用 Virtual 属性需要先在定义 Schema 时声明,虚拟属性默认只读,不可以被修改。以下是一个使用 Virtual 属性的示例代码:
-- -------------------- ---- ------- --- -------- - -------------------- --- ------ - ---------------- --- ------------ - --- -------- ---------- ------- --------- ------ --- ----------------------------------------------- - ------ -------------- - - - - -------------- --- --- ------ - ------------------------ --------------
在这个示例代码中,我们定义了一个 Person 的 Model,包含 firstName 和 lastName 两个实际数据属性,以及一个 fullName 的 Virtual 属性。在定义 Virtual 属性时,我们使用了 Mongoose 提供的 virtual() 方法,指定属性名为 fullName,然后使用 get() 方法定义了这个属性的取值函数,函数返回值为计算得到的字符串。
接下来,我们进行查询操作,即可获取到一个包含 Virtual 属性 fullName 的对象:
Person.find(function(err, people) { console.log(people[0].fullName); // 'John Doe' });
在上述示例中,我们可以看到,即便实际数据属性只包含了两个字符串,我们还是可以轻松地获取一个同时包含 firstName 和 lastName 两个值的 Virtual 属性 fullName 值。
总结:
Virtual 属性在 Mongoose 中使用非常方便,特别是对于一些需要动态计算属性的场景,它可以让我们更加灵活地处理数据属性问题。在使用时,需要谨慎设计属性名称和属性值类型,避免出现冲突等问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651a289595b1f8cacd22b17b