在实时数据库触发器中获取 UID 的模式



看起来github上有一个封闭的问题,确认没有官方方法来获取触发实时数据库onCreate/onUpdate和onDelete的用户的身份。

https://github.com/firebase/firebase-functions/issues/133

对于 onCreate 和 onUpdate 场景,我通过在模型上添加必需的 uid 字段并通过数据库规则根据 firebase 身份验证对其进行验证来处理它。

"uid":{
      ".validate": "auth.uid === newData.val()"
 }

通过这种更改,函数可以通过简单地在函数代码中调用event.data.val().uid来查找 uid。

这不适用于 onDelete 方案,因为已删除的记录没有数据。我已经研究了在模型上添加 markForDelete 字段等选项,但在这一点上它看起来像一个黑客。

如果您需要触发事件的用户的 uid 并且不想使用未记录的 event.auth api,则在项目中对 onDelete 方案使用哪种模式?

将用户的 uid 放在您创建/更新/删除的节点的路径中:

/path/to/{uid}
  - property1
  - property2

无论操作是什么,它都将始终存在于事件中。 您还可以使用基于用户的安全规则对其进行保护。

此外,请考虑有一个专用空间,用于按用户推送命令,由函数触发器处理。 我在 I/O 17 的会议上谈到了这一点。

最新更新