2015-08-22 35 views
1

我创建一个web应用程序,包括团队和用户。用户可以属于多个团队,团队由许多用户组成。为了实现这一点在后台,我跟着导游水线像this one创建关联表,并创造了水线模型为用户和组。做完这些之后,我仍然不确定我的API可能会如何返回,例如属于某个团队的用户列表。 我不确定这里的最佳做法是什么。我应该在团队模型中创建一个只存储团队用户名称的数组,并在需要时返回该数组?或者有没有一种有效的方式来查询关联表以获得特定团队的用户列表? 任何帮助将不胜感激!如何构建数据库模型在帆的许多一对多关联

+0

你链接到的水线指南有所有的答案 - 只需用“宠物”替换“团队”,它就是为你准确建模的。您可以使用“填充”来获取与用户关联的所有团队,或与团队关联的所有用户。 – sgress454

回答

2

使用blueprints你的API,你将自动检索球队的用户。

如果你想使用自定义控制器,可以使用获得的populate()相同的结果。

Team.findOne({id:id}).populate('users').exec(function(err, team){ 
    console.log(team.toJSON()) 
}); 
1

我的建议是,重新审视自己的业务逻辑,如果你正在使用的数据库就像蒙戈规划模型状物体,Y想有用户喜欢你的主要项目:

var UserModel = { 
 
    name: String, 
 
    age: Number, 
 
    teams:[ 
 
    { 
 
     name: String, 
 
     memberSince: Date 
 
    }, 
 
    { 
 
     name: String, 
 
     memberSince: Date 
 
    } 
 
    ] 
 
};

然后取回一些球队的查询看起来像

var memberList = UserModel.find({teams.name:<your team>}); 

不要的用户列表中使用任何IDS绑定collecti ons只是使用数组在您的用户集合中使用它们。

+0

不幸的是我需要的团队模式来存储个人信息的球队,所以我不知道你的建议是可行的。 – pdorns

相关问题