【问题标题】:How to know the exact path of the updated information of the firebase-database from cloud functions?如何从云函数中知道firebase-database更新信息的准确路径?
【发布时间】:2017-06-29 20:07:27
【问题描述】:

This is my firebase-database structure (click here).

如果我听路径 /users/{uid}/。如果我在 /users/{uid}/GyroScope Y-axis//users/{uid}/GyroScope Z-axis/ 中插入数据,我怎么知道在哪里数据是否准确插入?比如如何获取插入/更新数据的引用?

【问题讨论】:

    标签: node.js firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    由于您正在收听/users/{uid},您将始终收到该级别的更新——因此event.data.refevent.data.adminRef 将在/users/<THE_UID_OF_THE_WRITE> 上被引用。

    为了更具体,您可以在几个不同的地方查找更多信息:

    1. Event#params:您可以调用 event.params.uid 从您的示例中获取 {uid}
    2. 您可以使用DeltaSnapshot#previous 方法查看写入前的数据。因此,如果您想知道写了什么,您可以区分 event.data.val()event.data.previous.val() 或致电 event.data.changed('GyroScope-Z-Axis') 以查看该特定属性是否已更改。
    3. 您可以使用/users/{uid}/{prop} 之类的内容在更深层次上收听,然后您将收到每个子属性的写入通知,而不仅仅是顶级属性。使用此模式,您的示例将写入 event.params.prop 等于 GyroScope Z-Axis
    4. 你可以听例如/users/{uid}/GyroScope-Z-Axis 只收到有关该特定属性的通知。

    希望能为您提供大量潜在的攻击途径。祝你好运!

    【讨论】:

    • 谢谢。从我的数据库结构来看,由于新更新的信息放在最后,有没有办法以相反的顺序迭代 GyroScope X 轴下的子项?
    • Firebase 无法以相反的顺序进行查询。您的选择是 a) 使用 limitToLast(n) 并自己反转结果,或者 b) 创建排序键,以隐式方式显式排序。
    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2020-03-25
    • 2021-12-13
    • 2019-01-31
    相关资源
    最近更新 更多