SailsJS v0.10多个模型关联

时间:2014-05-05 14:29:14

标签: javascript node.js sails.js

我有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 
    });

但是,我如何用评论填充个人资料?

1 个答案:

答案 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