繁体   English   中英

如何获取 Firebase 中的所有子密钥?

[英]How to get all child keys in Firebase?

我有一个带有大量子节点的 Firebase(实时数据库)节点。 我想列出所有子键,所以我使用了以下代码:

reference.once('value', snapshot=>{
    snapshot.forEach(child => {
        console.log(child.key);
    })
})

那么 Firebase 会抛出异常:

指定的负载太大,请请求数据较少的位置。

所以我不知道如何在不出现该错误的情况下获取子键(仅)。 请帮忙!

使用 Firebase 的浅查询https://firebase.google.com/docs/database/rest/retrieve-data#shallow

例如,如果您的数据结构如下

parent: {
  child_0: {...<large data>...},
  child_1: {...<large data>...},
  child_2: "abc",
  child_3: 123
}

浅查询的结果将是:

parent: {
  child_0: true,
  child_1: true,
  child_2: "abc",
  child_3: 123
}

一些意外错误可能会发送cancel事件并终止连接。 原因在为此事件提供的数据中描述。 一些潜在原因如下: 1. Firebase 实时数据库规则不再允许在请求的位置进行读取。 此原因的data描述为“Permission denied”。 2. 一个写入触发了一个事件流送器,它发送了一个超过我们的限制 512MB 的大型 JSON 树。 此原因的data是“指定的有效负载太大,请请求数据较少的位置”。

由于实时数据库每个请求仅限制 500Mb,因此为了执行此请求,您应该尝试使用child_added listener器分页查询或尝试迭代子节点,而不是查询所有子节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM