如何从我的 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 上的文档中所述。
我有这个数据库:
此处的主要目标是在 members_uid 与用户匹配时显示组名。我可以使用 auth.currentUser
我目前正在尝试打印 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 上的文档中所述。