乐闻世界logo
搜索文章和话题

How to have an auto calculated attribute in mongoose schema

6 个月前提问
5 个月前修改
浏览次数22

1个答案

1

在 Mongoose 中,自动计算属性通常通过虚拟属性(Virtuals)来实现。虚拟属性不是数据库模型的一部分,它们仅存在于逻辑中,这意味着它们不会直接存储在数据库中。虚拟属性非常适合用于你想通过已有的数据库字段计算得到的值。

例如,假设我们有一个用户模型,其中包含每个用户的名字和姓氏,我们想要创建一个虚拟属性来自动计算出用户的全名。

以下是如何定义这个虚拟属性的示例:

javascript
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ firstName: { type: String, required: true }, lastName: { type: String, required: true } }); // 定义一个虚拟属性 `fullName` userSchema.virtual('fullName').get(function () { return `${this.firstName} ${this.lastName}`; }); // 创建模型 const User = mongoose.model('User', userSchema); // 使用模型 const user = new User({ firstName: 'Li', lastName: 'Lei' }); console.log(user.fullName); // 输出: Li Lei

在这个案例中,fullName 是通过连接 firstNamelastName 字段计算得到的。当你访问 user.fullName 时,会自动执行定义的 getter 函数,返回计算后的全名。

虚拟属性可以非常灵活地用于多种场景,比如计算年龄、全名、地址格式化等。重要的是,由于它们不会占用数据库存储空间,因此可以提高数据处理的效率和灵活性。

2024年6月29日 12:07 回复

你的答案