【问题标题】:What happens when I use .on() in Firebase Cloud Functions?当我在 Firebase Cloud Functions 中使用 .on() 时会发生什么?
【发布时间】:2018-11-16 18:42:42
【问题描述】:

如果我不使用 .off() 来关闭事件监听器,是否会在处理完 http 请求后自动关闭?

因此,当用户浏览 http://www.example.com/organisations 时,我使用 .on() 调用检索数据,例如:

admin.database().ref('organisations').on('child_added', snap...)

当请求完成并且用户获得了他的数据时,该连接会发生什么?由于我没有使用 .off() 关闭事件侦听器,我应该假设 Cloud Functions 仍在侦听 child_added 事件?但另一方面,这对于 http 请求没有任何意义,所以我也可以假设 Firebase 在处理请求后关闭所有事件侦听器?

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    如果您不调用off() 来停止由on() 启动的侦听器,它不会关闭。在分配的服务器实例关闭之前,您可能需要为其消耗的带宽付费。

    在 Cloud Functions 中使用 on() 几乎从来都不是正确的做法

    您可能应该只在数据所在位置调用一次(),并在数据准备就绪时使用它。

    【讨论】:

    • 谢谢。我知道在 Cloud Functions 中使用 .on() 没有意义,但我想检索一个列表,我认为使用 .once('value') 可能是错误的方式。
    • .once('value') 然后snapshot.forEach... 将每个孩子推送到一个数组中,然后响应正文中的数组@Fortuna
    • once() 为您提供所请求位置下的所有内容。之后你可以对数据做任何你想做的事情。
    • 我认为这是如何在 Cloud Functions 中检索“其他”数据的一个非常惯用的示例:stackoverflow.com/a/43650799
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2021-05-04
    • 2018-10-11
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多