我正在寻找一种使用mongoose填充别名/虚拟财产的方法?
目前,mongoose的人口是为引用属性添加更多字段(通常是身份密钥)。 我想保留原始属性并将引用的数据填充到其他属性。
Ex:似乎我们需要更多关于架构的选项
profile_id: { type: mongoose.Schema.Types.ObjectId, ref: 'profiles', populateTo: 'profile' }
结果返回应包含两个属性:profile_id
和profile
在搜索时间后,我在github上发现了这个问题:(https://github.com/Automattic/mongoose/issues/3225
答案 0 :(得分:0)
是。您可以使用虚拟属性填充参考对象。 您需要做的就是在架构上定义一个虚拟属性,如下所示:
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: 在定义架构时使用 {toJSON:{virtuals:true}}