Firebase:在未知名称键(另一个子项中的子项)中查询数据

时间:2019-04-05 11:23:11

标签: javascript react-native firebase-realtime-database

我正在开发React Native应用,并对查询有疑问。

我需要返回所有(例如“ group-id-01”),其中提供的 UID 存在于成员中。 / p>

Firebase

此代码返回所有组:

const memberGroup = firebase.database().ref('groups')
memberGroup.once('value')
        .then((snapshot) => {
          console.log('snapshot');
          console.log(snapshot.val());
        })
        .catch((error) => {
          console.log('Erro');
          console.log(error);
        });

我得到的结果:

"group-id-01"
  "members"
    "no-uid-provided":"Belem"
    "oZlTzlbCTGaZfsrzyxqABlnxt2e2":"Julia"
  "name":"Rolling Stones"

我想要的结果:

"group-id-01"
  "members"
    "oZlTzlbCTGaZfsrzyxqABlnxt2e2":"Julia"
  "name":"Rolling Stones"

嗯...

我用.orderByChild和.equalTo尝试了一些查询,但结果为空。

const memberGroup = firebase.database().ref('groups')
.orderByChild('oZlTzlbCTGaZfsrzyxqABlnxt2e2')
.equalTo('Julia')

memberGroup.once('value')
        .then((snapshot) => {
          console.log('snapshot');
          console.log(snapshot.val());
        })
        .catch((error) => {
          console.log('Erro');
          console.log(error);
        });

我是Firebase的新手,我不知道是否可以在另一个名字未知的孩子中查询孩子。

感谢所有帮助:D

1 个答案:

答案 0 :(得分:2)

您当前的结构可让您轻松查找给定组的成员。它不允许您轻松查找给定用户的组。要允许后者,您将需要添加附加数据结构(通常称为反向索引),将用户映射到组。

userGroups
  uid1
    groupid1: true
    groupid2: true
  uid2
    groupid2: true
    groupid3: true

这意味着您要复制数据以考虑其他用例,这在NoSQL数据库中很常见。

另请参阅: