我在Firebase中有一个具有以下结构的数据库:
{
groups: {
"$groupId1": {
name: "My group",
members: {
"$userId1": true,
"$userId2": true
},
creator_id: $userId1
}
},
users: {
"$userId1": {
groups: {
'$groupId1': true
}
},
"$userId2": {
groups: {
'$groupId2': true
}
}
}
}
我也在使用AngularFire。
如果我想查找给定用户创建的所有组,我可以使用如下查询:
// rootRef is my Firebase root ref
var groupsForCreatorRef = rootRef.child("groups").orderByChild("creator_id").equalTo(userId);
然后我可以将它包装在$ firebaseArray中,如下所示:
$firebaseArray(groupsForCreatorRef);
我想做一些非常相似的事情,但对于给定用户 成员的所有群组,不仅仅是用户创建的群组。根据我的数据结构,我可以这样做吗?也就是说,我希望能够做到这样的事情:
$firebaseArray(rootRef.child("groups").orderByChild("members").contains(userId));
但是没有这样的“.contains”查询。
或者,我可以查找用户的组ID,如下所示:
rootRef.child("users").orderByKey().equalTo(userId).child("groups");
然后我可以使用这些组ID查找组。但有没有办法我可以一次性完成所有这一切,而不是逐个查找每个组的ID?我问,因为我希望能够使用$ firebaseArray,如上所示,如果我必须逐个检索每个组,我不确定是否可以使用$ firebaseArray。