我有3个型号。用户,个人资料和评论。
个人资料是用户的关联(一对一),评论是个人资料的关联(一对多)。
用户模型:
attributes: {
profile: {
model: 'Profile'
},
}
个人资料模型:
attributes: {
comments: {
collection: 'profileComment',
via: 'profile'
}
}
评论模型:
attributes: {
profile: {
model: 'Profile'
},
}
获取用户个人资料正常:
User.findOneById(id)
.populate('profile')
.exec(function (err, user) {
// user.profile
});
但是,我如何用评论填充个人资料?
答案 0 :(得分:1)
您似乎可以通过在user
上设置profile
属性来恢复您想要的内容:
attributes: {
comments: {
collection: 'profileComment',
via: 'profile'
},
user: {
model: 'User'
}
}
然后查询:
Profile.findOne({user: userId})
.populate('user')
.populate('comments')
.exec(function(err, profile) {
// use profile.user and profile.comments
});
但请注意,Waterline目前尚未实现真正的一对一关联,因此如果您将Profile
实例的user
属性设置为{{ 1}},相应的123
实例不会自动设置其User
属性。这可能不是什么大问题 - 您可以随时查找profile
并填充Profile
,就像上面的示例一样 - 但要记住这一点。
您的另一个选择是保持原样,并执行映射,如this question and answer。