【问题标题】:Combine onDisconnect with Cloud Functions in Firebase在 Firebase 中将 onDisconnect 与 Cloud Functions 结合使用
【发布时间】:2017-07-22 19:02:09
【问题描述】:

假设用户可以写入“房间”并且当用户断开连接时应该删除这些值,我认为云功能代码如下所示:

exports.Rooms = functions.database.ref('/rooms/{values}').onWrite(event => {
 if (!event.data.exists()){return}
   return db.ref('rooms/' + `${event.params.values}`).onDisconnect().remove()
}
})

但是当用户在将值写入“房间”后断开连接时,什么也没有发生。如何删除用户断开连接时写入的路径?

谢谢。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    onDisconnect() 在 Cloud Functions 中使用没有意义。这在客户端是有意义的,因为客户端是断开连接的对象。如果您希望在客户端断开连接时触发函数,则必须在客户端设置onDisconnect(),将其写入触发函数以对该事件作出反应的位置。

    【讨论】:

    • 嗯好吧,这看起来很合理......实际上,在查看我的数据库后,代码确实执行了,但在 1 小时后。很奇怪,我又测试了一遍,客户端断线15分钟后就删除了。
    • onDisconnect() 如何从云功能中没有意义?举个例子:promise(doSomething; onDisconnect().remove(); return ref;) .then((ref) => dosomethingWithRef; do more onDisconnects() return someData). then((data) return new Promise() { async code here resolve()}) 你不能没有 process.exit(); (确实调用 onDisconnect())
    • 我赞同上面的评论。没有办法知道用户何时从服务器端断开连接,这让我感到非常困惑,因为这只是意味着我不能信任断开连接的过程(因为它来自客户端)
    • @HelderEsteves 如果有功能请求,您可以将其发送至Firebase support。但是 onDisconnect 功能现在绝对只是客户端 SDK 的功能。您可以编写一个云函数来触发 onDisconnect 回调写入的数据,但仅此而已。
    猜你喜欢
    • 2018-01-17
    • 2017-09-19
    • 2019-04-02
    • 1970-01-01
    • 2017-08-12
    • 2018-03-29
    • 2017-09-04
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多