如何从我的 firebase 实时数据库中检索子数据的子数据?

How do I retrieve the child of the child of the child's data from my firebase Realtime database?

我有这个数据库:

此处的主要目标是在 members_uid 与用户匹配时显示组名。我可以使用 auth.currentUser

获得 user_uid

我目前正在尝试打印 members/members,这样我就可以使用 if 语句并在我的 return 语句中显示结果(使用 React

我尝试过的:

const db = getDatabase();
    const dataRef = ref(db, '/groups');
    onValue(dataRef, (snapshot) => {
        const childKey = snapshot.key;
        const data = snapshot.val()
        const key = Object.keys(data);
        console.log(data)
        console.log(key)
        console.log(childKey)

        })

childKey = 组

key = returns 所有 firebase 生成的键(例如 -N02Qrg...)

data = return一切

如何获得groups/members/membersuid

由于您正在阅读 groups,因此您获得的 snapshot 包含该路径下的所有数据。要导航快照,您有两个主要功能:

  • snapshot.child("name") 允许您获取您知道其名称的子节点的快照。
  • snapshot.forEach() 允许您遍历所有子快照,通常是当您不知道它们的名字时。

通过结合这两者,您可以浏览任何结构。对于你的 JSON,我会这样做:

const db = getDatabase();
const dataRef = ref(db, '/groups');
onValue(dataRef, (snapshot) => {
  snapshot.forEach((groupSnapshot) => {
    console.log(groupSnapshot.key); // "-N02...R1r", "-N02...1T8"
    console.log(groupSnapshot.child("g_id").val()); // "jystl", "nijfx"

    snapshot.child("members").forEach((memberSnapshot) => {
      ... // each of the child snapshots of the `members` nodes
    });
  })
})

顺便请注意,在单个父节点下嵌套多种类型的数据是 Firebase 上的常见反模式,如 structuring data, specifically the sections on avoiding building nests and keeping your data flat 上的文档中所述。