如何使用pyrebase访问firebase Realtime Database根节点下的子节点
如下为实时数据库的结构示意图:
实现方法
根据你的使用场景分为两种实现方案:
- 如果你已经明确知道目标节点的ID,直接通过
child()指定ID后调用get()即可:
const targetNodeRef = db.child('2sdkfpjLZqWyWvWzE00zxhzxZFN2') const snapshot = await targetNodeRef.get() if (snapshot.exists()) { // 此处即可获取该节点下的全部数据 const nodeData = snapshot.val() }
- 如果你不知道根节点下第一个子节点的具体ID,需要动态获取第一个节点,可以用
limitToFirst(1)优化查询,避免拉取根节点全量数据:
// 仅查询根节点下的第一条子节点数据 const firstNodeRef = db.limitToFirst(1) const snapshot = await firstNodeRef.get() if (snapshot.exists()) { snapshot.forEach(childSnapshot => { // 获取节点ID const nodeKey = childSnapshot.key // 获取节点数据 const nodeData = childSnapshot.val() // 遍历到第一个节点后终止循环 return true }) }
注意事项
get()方法为异步接口,必须使用await或者.then()回调的方式处理返回结果,同步调用无法拿到正确数据- 如果请求返回权限错误,需要检查实时数据库的规则配置,确认当前账号拥有对应节点的读权限
内容的提问来源于stack exchange,提问作者Max Damage
相关产品推荐
相关产品推荐

