在多个参考ID上查询Firebase数据

在多个参考ID上查询Firebase数据,firebase,Firebase,我在Firebase中的数据结构有点像下面这样。用户有一个他们有权访问的组列表。我想知道我如何进行Firebase查询,只获取$refid等于users中“groups”部分中一次的组。这是一种多对多的关系。我只想列出用户所属的组 是一个接一个地获取它们的唯一选择,还是有更好的解决方案 users: { "$uid": { name: "John Doe", groups: { "$refId": true,

我在Firebase中的数据结构有点像下面这样。用户有一个他们有权访问的组列表。我想知道我如何进行Firebase查询,只获取$refid等于users中“groups”部分中一次的组。这是一种多对多的关系。我只想列出用户所属的组

是一个接一个地获取它们的唯一选择,还是有更好的解决方案

users: {
    "$uid": {
        name: "John Doe",
        groups: {
            "$refId": true,
            "$refId": true
        }
    },
    "$uid": {
        name: "Jane Doe",
        groups: {
            "$refId": true
        }
    }
},
groups: {
    "$refId": {
        title: "Group 1"
    },
    "$refId": {
        title: "Group 2"
    }
}

正如您所建议的,从用户节点加载组并迭代将得到每个组

另一个选择是稍微不同的组结构

groups: {
    "$refId": {
        title: "Group 1"
        uid0: true
        uid1: true
    },
    "$refId": {
        title: "Group 2"
        uid1: true
        uid3: true
    }
}

然后可以在groups节点中查询uid1:true,它只返回uid1所属的组;在这种情况下,第一组和第二组。

回答得很好,杰!快速提示:第二种方法的优点是它允许直接访问成员列表。我更愿意将“组元数据”(即标题)从“组成员”中分离出来。此外,您可以考虑存储关于每个成员的有用信息(例如,他们的名字),而不是“<代码>真< /代码>。这样,您就可以通过单个直接查找而不是多个嵌套查询来显示组成员列表。