猿问

如何在没有外部节点名称的情况下获取内部节点中的 firebase 数据?

我想从 ref 中的 firebase 读取数据,("locations/{{someLocation}}/logs/{{someDevice}}") 但我不知道是否存在正确的表格,因为我需要使用“.on”来不断听到所有设备的变化,问题是我需要阅读所有设备在所有位置的日志中,但我不需要其他信息,我只需要日志或特定设备中的信息,我知道我可以为每个设备调用一个回调“.on”,但我想要一个更干净的制作它的表格和文档中,对此没有帮助。

也许我可以调用这样的方法

firebase.database("locations/{eachLocation}/logs/{eachDevice}").ref().on...

因为我不想要所有的设备,问题是我不知道是否有表格可以制作它谢谢。

白猪掌柜的
浏览 138回答 2
2回答

呼如林

听起来您的数据嵌套太多了。Firebase 文档有关于避免嵌套数据和展平数据结构的明确部分,并提供了有关如何防止这种情况的提示。乍一看,您至少需要两个顶级列表:locations和locationLogs。在每个下,您拥有与现在相同的密钥,但日志现在位于 under/locationLogs/$key而不是 under 下/locations/$key/logs。通过该更改,您可以获取某个位置的日志,而无需获取该位置的其他数据。如果您不知道位置键,但不想获取所有位置的日志,听起来您嵌套的另一个级别太深了。Firebase 查询在节点的平面列表上工作,并且无法跨多个级别的未知键进行搜索。如果要搜索所有位置的所有日志,则需要保留所有日志的平面列表。然后,您可以通过将位置 ID 添加到每个日志来将每个日志与其位置相关联。因此,这可能会导致以下结构:logs: {  "adjustableLight....1": {    locationId: "DTZB35",    date: 156...,"    ...  }}

Smart猫小萌

实时数据库不支持您尝试执行的操作。没有通配符查询或占位符。您必须能够构建到您想要获取其数据的节点的完整路径。考虑更改数据结构,以便您可以更轻松地找到所需的节点。在 nosql 类型的数据库中,将数据复制到更容易查询特定用例的结构中很常见。实时数据库不支持您尝试执行的操作。没有通配符查询或占位符。您必须能够构建到您想要获取其数据的节点的完整路径。考虑更改数据结构,以便您可以更轻松地找到所需的节点。在 nosql 类型的数据库中,将数据复制到更容易查询特定用例的结构中很常见。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答