【问题标题】:mongoose : Could we populate reference object to a alias/virtual property?猫鼬:我们可以将引用对象填充到别名/虚拟属性吗?
【发布时间】:2016-08-24 02:10:08
【问题描述】:

我正在寻找一种使用 mongoose 填充到别名/虚拟属性的方法?

目前,mongoose 的种群正在向引用属性添加更多字段(通常是标识键)。 我想保留我的原始属性并将引用的数据填充到另一个属性。

例如:似乎我们需要更多关于架构的选项

profile_id: { type: mongoose.Schema.Types.ObjectId, ref: 'profiles', populateTo: 'profile' }

结果返回应该包含两个属性:profile_idprofile

经过一段时间的搜索,我在github上发现了这个问题:(https://github.com/Automattic/mongoose/issues/3225

【问题讨论】:

    标签: mongoose mongoose-populate mongoose-schema


    【解决方案1】:

    是的。您可以使用 虚拟属性 填充参考对象。 您需要做的就是在您的架构上定义一个虚拟属性,如下所示:

    UserSchema.virtual('profile', {   
        ref: 'Profiles', // the collection/model name
        localField: 'profile_id',
        foreignField: '_id',
        justOne: true, // default is false
    });
    

    然后使用填充方法:

    User.find({}).populate({ path: 'profile', select: 'name status' })
    

    这将返回以下结果:

    {   // USER
        _id: 'xx...1',
        username: 'alpesh',
        profile_id: 'xx......7',
        profile: {    // POPULATED
            name: 'Admin',
            status: 'Active
        }
    }
    

    请注意 - 如果您使用的是 nodejs/express: 在定义 Schema 时使用 { toJSON: { virtuals: true } }

    参考 - https://mongoosejs.com/docs/populate.html

    【讨论】:

      猜你喜欢
      • 2021-01-09
      • 2017-04-04
      • 2020-05-18
      • 2018-01-15
      • 2016-02-02
      • 1970-01-01
      • 2016-05-09
      • 2018-12-23
      • 1970-01-01
      相关资源
      最近更新 更多