【问题标题】:Firebase Realtime Database Triggers on Cloud Run or Kubernetes, Not Cloud FunctionsCloud Run 或 Kubernetes 上的 Firebase 实时数据库触发器,而不是 Cloud Functions
【发布时间】:2021-11-17 23:48:09
【问题描述】:

基于Firebase documentation,可以通过以下方式创建一个云函数来在Firebase数据库上添加/更新/删除文档时触发:

functions.database.ref('/messages/{pushId}/original').onUpdate();

但是,当我调用以下命令时,使用 Node.js 管理 SDK:

admin.database().ref("/messages/{pushId}/original").onUpdate();

返回错误:

TypeError: admin.database(...).ref(...).onUpdate is not a function

我们还应该做些什么来访问 Cloud Run 或 Kubernetes 上的 Firebase 实时数据库触发器?

【问题讨论】:

    标签: node.js firebase firebase-realtime-database google-admin-sdk google-cloud-run


    【解决方案1】:

    firebaser 在这里

    onUpdate 方法仅存在于 firebase-functions SDK 和 GCP 上等效的 Cloud Functions 中。它在 Firebase Admin SDK 中不存在,这就是您尝试在那里使用它时出错的原因。

    虽然可能可以在 Cloud Run 上接收实时数据库事件(我自己没有尝试过),但您必须按照为 Eventarc on Cloud Run 概述的流程,然后连接Realtime Database events 记录在那里。

    更新:正如一位队友所指出的,您今天可以通过 Eventarc 接收的实时数据库触发器用于管理事件,例如创建和删除数据库实例。数据级事件的触发器正在开发中,但尚不可用(也没有任何时间线)。

    【讨论】:

    • 谢谢您,弗兰克,您的快速回复。我们需要在我们的项目(一个协作学习游戏应用程序)中使用它的唯一原因是 firebase.google.com/docs/firestore/solutions/presence Cloud Functions 启动缓慢,这在我们基于 Web 的游戏应用程序中很烦人。这就是我们想在 Cloud Run 中实现它的原因。有没有更有效的方法来管理 Firestore 中的用户状态?
    • Firestore 的客户端和服务器之间的协议是无连接的,因此它实际上没有任何方法来处理存在。一种常见的替代方法是定期从客户端向服务器发送时间戳,然后使用它来确定您是否认为每个客户端仍然处于活动状态。这通常称为心跳,因此您可能需要搜索该术语。
    猜你喜欢
    • 2017-10-18
    • 2017-12-13
    • 1970-01-01
    • 2020-02-21
    • 2018-08-09
    • 2019-10-03
    • 2017-10-01
    • 2018-10-11
    • 2017-08-25
    相关资源
    最近更新 更多