Mongoose 如何使用 Virtuals?

阅读时长 3 分钟读完

虽然 Mongoose 的模型定义通常对应 MongoDB 的文档结构,但有时需要通过模型的属性来间接获取其它属性的值,Mongoose 的虚拟属性(Virtuals)就可以实现这一需求。本文将详细介绍 Mongoose 如何使用虚拟属性。

什么是虚拟属性?

虚拟属性是在 Mongoose 模型中定义的一种计算属性,它不会保存到 MongoDB 中。虚拟属性可以用于包装单独存储在模型中的数据,并且可以在模型上设置和获取。通过虚拟属性,我们可以将多个属性的值全部包装到虚拟属性中,从而方便地访问这些属性。

虚拟属性可以是同步的也可以是异步的,如果需要从数据库中获取某些属性的值,建议使用异步方式获取,以便不占用 Node.js 的 I/O 线程,提高系统的性能。

如何定义虚拟属性

在 Mongoose 中定义虚拟属性非常简单,只需要在模型定义中使用 schema.virtual() 方法即可。schema.virtual() 方法接收两个参数:虚拟属性的名称和虚拟属性的实现。以下是一个定义虚拟属性的示例:

在上面的示例中,我们定义了一个名为 fullName 的虚拟属性,它返回 firstNamelastName 的值拼接起来的字符串。

可以使用 getset 方法分别实现虚拟属性的读取和设置。在上面的示例中,我们只使用了 get 方法,表示该虚拟属性只读不可写。如果需要向虚拟属性中写入数据,可以添加一个 set 方法。

在上述示例中,我们使用 set 方法向虚拟属性 fullName 中写入了名字数据,通过 split() 方法将名字拆成了两个单词。

如何访问虚拟属性

在 Mongoose 模型实例中访问虚拟属性非常简单,只需要像访问普通属性一样访问即可。以下是一个访问虚拟属性的示例:

在上面的示例中,我们首先定义了一个 User 模型,然后创建了一个 user 实例。最后,我们使用 user.fullName 访问了虚拟属性。

总结

本文介绍了 Mongoose 模型中的虚拟属性的基本概念、使用方法以及访问方式。通过对虚拟属性的使用,我们可以方便地计算属性的值,更加灵活地获取模型中的数据。

以上就是关于 Mongoose 如何使用 Virtuals 的详细介绍,希望对读者有所帮助!

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

纠错
反馈