【发布时间】:2022-01-21 07:22:42
【问题描述】:
我正在尝试在删除 firestore 中的文档的任何经过身份验证的用户的 onWrite 云函数中获取 UID(不是没有此问题的实时数据库)。原因是......我正在尝试创建对集合中的文档执行的所有操作的日志。我必须使用云功能,因为客户端可以假设创建/编辑/删除文档,然后阻止发送相应的日志条目。
我在其他 stackoverflow 问题中看到过:
- Firestore - Cloud Functions - Get uid
- Getting the user id from a Firestore Trigger in Cloud Functions for Firebase?
Firestore 不会在 onWrite 函数中包含任何用于 firestore 的身份验证数据,并且可接受的解决方法是在正在创建/更新的文档中包含 updated_by、created_by、created_at、updated_at 等字段使用 Firebase 权限进行验证。这对于插入或更新的文档非常有用,但在onWrite 云函数中删除的文档只有change.before 数据,没有change.after 数据,这意味着您无法查看谁删除了文档,最多也无法查看谁更新了文档删除前最后的文档。
我正在尝试以下一些变通方法(但他们有严重的批评者):
- 在文档被删除之前发送更新。 问题 -> 可能存在时间问题、去抖动问题、需要混乱的权限以确保仅在文档进行更新时才将其删除。
- 使用标记删除的字段更新它,并在云函数中监视此标记,然后执行删除。 问题 -> 导致项目被删除之前的延迟非常明显。
有没有人有更好的方法来做这样的事情?谢谢!
【问题讨论】:
标签: node.js firebase google-cloud-firestore google-cloud-functions