我有三个模型:users
,groups
,subscribers
。通过群组订阅者模型,用户和群组之间存在多对多关系。
我希望得到用户订阅的所有群组的列表,以及所有订阅者。
// Group model
subscriber: {
collection: 'user',
via: 'group',
through: 'messagegroupsubscriber'
}
// Controller
Group.find().populate('subscriber').exec(function(err, grps) [
return res.json(grps);
});
这会返回带有订阅者的所有组 - 但我只想要订阅用户的组(在这种情况下:用户ID在订阅者属性中)。
// Assuming the user ID is 1
// What I get
[
{
"groupID": 1,
"name": "First group",
"subscriber": [
{
id: 1,
name: "John"
}
]
},
{
"groupID": 2,
"name": "Second group",
"subscriber": []
}
]
// What I WANT to get
[
{
"groupID": 1,
"name": "First group",
"subscriber": [
{
id: 1,
name: "John"
}
]
}
// no more "Second group", since user ID "1" is not within the subscribers
]
水线是否可以实现?如果是这样,怎么样? (否则我想我需要切换到Sequelize或类似的东西,因为我将来会有更复杂的查询)