javascript - 如何在没有外部节点名称的情况下获取内部节点中的 Firebase 数据?
问题描述
我想在 ref 中从 firebase 读取数据,("locations/{{someLocation}}/logs/{{someDevice}}")
但我不知道是否存在正确的表格,因为我需要使用“.on”来不断听到所有设备的变化,问题是我需要阅读所有设备在所有位置的日志中,但我不想要其他信息,我只需要日志或特定设备中的信息,我知道我可以为每个设备调用一个回调“.on”,但我想要一个更清洁的制作它的表格,在文档中,对此没有帮助。
也许我可以调用这样的方法
firebase.database("locations/{eachLocation}/logs/{eachDevice}").ref().on...
因为我不想要所有的设备,问题是我不知道是否有表格可以制作谢谢。
解决方案
听起来您的数据嵌套太多了。Firebase 文档有关于避免嵌套数据和扁平化数据结构的明确部分,并提供了有关如何防止这种情况的提示。
乍一看,您至少需要两个顶级列表:locations
和locationLogs
. 在每个下,您都拥有与现在相同的键,但日志现在位于 under/locationLogs/$key
而不是 under /locations/$key/logs
。通过该更改,您可以获取某个位置的日志,而无需获取该位置的其他数据。
如果您不知道位置键,但又不想获取所有位置的日志,那么听起来您将另一个级别嵌套得太深了。Firebase 查询适用于节点的平面列表,并且无法跨多个级别的未知键进行搜索。如果要搜索所有位置的所有日志,则需要保留所有日志的平面列表。然后,您可以通过将位置 ID 添加到每个日志来将每个日志绑定回其位置。
因此,这可能会导致以下结构:
logs: {
"adjustableLight....1": {
locationId: "DTZB35",
date: 156...,"
...
}
}
推荐阅读
- uber-api - Android 上 Uber Eats 服务的 API 端点是什么?
- ruby-on-rails - 在rails中重定向循环
- ruby-on-rails - 如何在 webpacker 角轨中添加 scss 加载器?
- javascript - 如何在循环中使用函数或调用函数
- php - 如何修复 array_count_value 中的空白错误
- parsing - 如何在Lua中解析一系列带有空格的字符串
- excel-formula - 多列 VLOOKUP
- c# - 还有另一种方法可以将 ffmpeg 中的帧导出到 texture2d 吗?我的代码在 Windows 上工作,但在 Linux 上不工作
- csv - 在 AHK 中,如何正确使用 StrSplit 从 CSV 文件中创建一个数组,然后在特定条件下对其进行解析?
- python - 如何使用 Python/Regex 用变量替换/替换部分 url