如何在不从参考节点获取所有数据的情况下获取 Firebase 数据库中的随机键?

Posted

技术标签:

【中文标题】如何在不从参考节点获取所有数据的情况下获取 Firebase 数据库中的随机键?【英文标题】:How to get random keys in Firebase Database without fetching all data from a reference node? 【发布时间】:2022-01-05 04:43:09 【问题描述】:

我正在尝试从我的 Firebase 数据库中获取随机密钥,这是一组问题,但到目前为止我发现的所有解决方案都建议先获取所有数据,然后获取大小并从该数据中选择随机密钥。考虑到数据集可能会变得更大,我想知道是否可以在不必获取所有数据的情况下做到这一点。

我想将密钥保存到另一个节点并仅获取该节点,然后使用这些选定的密钥,我只能得到我需要的问题,从而减少不必要的数据,但这是否有意义?

【问题讨论】:

不可能。 【参考方案1】:

如果您想从一个大节点获取数据的子集到您的应用程序中,而您无法通过使用查询对数据进行切片来实现,那么将数据子集复制到自己的数据子集是很常见的单独的节点。

一个例子(不幸的是你的问题仍然很笼统):如果你有一个用户配置文件列表(比如/users),但只是想在你的应用程序中显示用户名列表,这是浪费检索完整的用户配置文件。在这种情况下,通常只使用用户名和 UID(比如/usernames)创建一个节点。

您通常要么从受信任的环境(例如您的开发机器、您控制的服务器或云函数)创建派生列表使用安全规则以确保派生列表中的数据与主列表保持同步。

【讨论】:

以上是关于如何在不从参考节点获取所有数据的情况下获取 Firebase 数据库中的随机键?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不从当前活动选项卡中获取焦点的情况下将子窗口添加到 QMdiArea(设置为 TAB 模式)?

如何在不读取所有数据的情况下获取此 CSV 的前 100 行 [关闭]

如何在不从表单中删除数据的情况下重置 BootstrapValidator? [复制]

在不从 CGPath 开头开始的情况下跟随带有 SKAction 的 CGPath

如何在不从磁盘中删除文件的情况下 git rm 文件? [复制]

如何在不从终端或任何编辑器执行的情况下运行 python 程序 [重复]