我正在创建一个由团队和用户组成的web应用程序。用户可以属于多个团队,而团队由许多用户组成。为了在后端实现这一点,我遵循了像这样的水线指南来创建关联表,并为用户和团队创建了水线模型。这样做之后,我仍然不确定我的api如何返回,例如,属于某个团队的用户列表。我不确定最佳做法是什么。我是否应该在团队模型中创建一个数组,仅存储团队用户的名称,并在需要时返回该数组?或者是否有一种有效的方法来查询关联表以获得特定团队的用户列表?任何帮助将非常感激!
使用api的蓝图,您将自动检索团队的用户。
如果您想使用自定义控制器,您可以使用populate()
获得相同的结果。
Team.findOne({id:id}).populate('users').exec(function(err, team){
console.log(team.toJSON())
});
我的建议是重新考虑您的业务逻辑,如果您使用像mongo这样的数据库计划您的模型像对象,我猜您的主要项目有用户喜欢:
var UserModel = {
name: String,
age: Number,
teams:[
{
name: String,
memberSince: Date
},
{
name: String,
memberSince: Date
}
]
};
,然后检索某个团队的用户列表,查询看起来像
var memberList = UserModel.find({teams.name:<your team>});
不要使用任何id来绑定集合,只要在你的用户集合中使用一个数组就可以了。