为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase Cloud Functions 中的 Python 与 Node.js 事件负载

Firebase Cloud Functions 中的 Python 与 Node.js 事件负载

RISEBY 2021-09-11 17:31:15
       我正在通过 Python 选项为 Firebase 编写云函数。我对 Firebase 实时数据库触发器感兴趣;换句话说,我愿意收听实时数据库中发生的事件。Python 环境提供以下签名来处理实时数据库触发器:def handleEvent(data, context):    # Triggered by a change to a Firebase RTDB reference.    # Args:         # data (dict): The event payload.         # context (google.cloud.functions.Context): Metadata for the event.这看起来不错。该data参数提供了2个字典; 'data'用于通知更改前的数据和'delta'更改的位。将此签名与Node.js环境进行比较时,就会产生混淆。这是来自Node.js世界的类似签名:exports.handleEvent = functions.database.ref('/path/{objectId}/').onWrite((change, context) => {}在这个签名中,change参数非常强大,它似乎是类型firebase.database.DataSnapshot。它有很好的辅助方法,例如hasChild()或numChildren()提供有关已更改对象的信息。问题是:Python环境有没有类似的DataSnapshot对象?使用 Python,我是否必须查询数据库以获取例如孩子的数量?Python 环境能做什么和不能做什么真的不清楚。相关 API/参考/文档:Firebase 实时数据库触发器:https ://cloud.google.com/functions/docs/calling/realtime-database数据快照参考:https : //firebase.google.com/docs/reference/js/firebase.database.DataSnapshot
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

python 运行时当前没有类似的对象结构。该firebase-functionsSDK实际上是做了很多关于你的工作在创造是容易消耗的对象。在 python 环境中没有发生类似的事情。您实际上是在触发您的函数的事件所包含的数据负载上获得了一个非常原始的视图。

如果您为节点编写实时数据库触发器,而不使用 Firebase SDK,也会出现类似情况。您将获得一个非常基本的对象,其属性类似于 Python 字典。

这就是为什么firebase-functions与 Firebase SDK 一起使用是从 Firebase 产品编写触发器的首选环境的原因。开发人员体验非常出色:它为您做了很多方便的工作。缺点是您必须支付 Firebase Admin SDK 在冷启动时加载和初始化的费用。

请注意,您可能可以使用适用于 Python 的 Firebase Admin SDK 解析事件并创建您自己的便利对象。


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信