在Firebase + AngularFire中进行多对多查询

时间:2016-10-20 16:16:07

标签: ionic-framework firebase firebase-realtime-database angularfire

我在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。

0 个答案:

没有答案