如何解决如何在没有外部节点名称的情况下在内部节点中获取Firebase数据?
我想从ref ("locations/{{someLocation}}/logs/{{someDevice}}")
中的firebase读取数据
但是我不知道是否存在正确的格式,因为我需要使用“ .on”来不断听到所有设备的更改,问题是我需要读取所有位置的日志中的所有设备,但是我没有需要其他信息,我只需要日志或特定设备中的信息,我知道我可以为每个设备调用一个回调“ .on”,但是我想要一种更简洁的形式,并且在文档中,对此没有帮助。
也许我可以调用类似的方法
firebase.database("locations/{eachLocation}/logs/{eachDevice}").ref().on...
因为我不想要所有设备,问题是我不知道是否有表格可以感谢你。
解决方法
实时数据库不支持您要执行的操作。没有通配符查询或占位符。您必须能够构建要获取其数据的节点的完整路径。
请考虑更改数据的结构,以便可以更轻松地找到所需的节点。在nosql类型的数据库中,通常会将数据复制到更易于查询特定用例的结构中。
,听起来您嵌套了太多数据。 Firebase文档在avoiding nesting data和flattening data structures上有明确的章节,并提供了有关如何防止这种情况的提示。
乍一看,您至少需要两个顶级列表:locations
和locationLogs
。在每个下方,您拥有与现在相同的键,但是日志现在位于/locationLogs/$key
下,而不是/locations/$key/logs
下。通过该更改,您可以获取某个位置的日志,而无需获取该位置的其他数据。
如果您不知道位置键,但又不想获取所有位置的日志,听起来好像您嵌套的另一个层次太深了。 Firebase查询在平面节点列表上工作,无法跨多个级别的未知键进行搜索。如果要搜索所有位置的所有日志,则需要保留所有日志的固定列表。然后,您可以通过在每个日志中添加位置ID,将每个日志绑定到其位置。
所以这可能导致以下结构:
logs: {
"adjustableLight....1": {
locationId: "DTZB35",date: 156...,"
...
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。