繁体   English   中英

Firestore - 云功能 - 获取删除文档的用户的 uid

[英]Firestore - Cloud functions - Get uid of user who deleted a document

我试图在 onWrite 云 function 中获取删除 firestore 中文档的任何经过身份验证的用户的 UID(不是没有此问题的实时数据库)。 原因是......我正在尝试创建对集合中的文档执行的所有操作的日志。 我必须使用云功能,因为客户端可以假设创建/编辑/删除文档,然后阻止发送相应的日志条目。

我在其他stackoverflow问题中看到过:

该 Firestore 将不会在 onWrite function 中包含任何用于 firestore 的身份验证数据,并且可接受的解决方法是在正在创建/更新的文档中包含updated_bycreated_bycreated_atupdated_at等字段,这些字段使用 firebase 权限进行验证。 这对于正在插入或更新的文档非常有用,但是onWrite云函数中删除的文档只有change.before数据,没有change.after数据,这意味着您无法查看谁删除了文档,最多也可以查看谁更新了文档删除前的最后一个。

我正在尝试以下一些解决方法(但他们有严重的批评者):

  • 在文档被删除之前发送更新。 问题-> 可能存在时间问题、去抖动问题,需要混乱的权限以确保仅在文档具有正在进行的更新时才将其删除。
  • 使用一个字段更新它,将其标记为删除,并在云 function 中观察此标签,然后执行删除。 问题-> 在项目被删除之前导致非常明显的滞后。

有没有人有更好的方法来做这样的事情? 谢谢!

  1. 根本不要删除文档。 只需添加一个名为“deleted”的字段,将其设置为 true,然后使用删除它的用户的 UID 添加另一个字段。 在查询中使用这些新字段来决定是否要处理任何给定查询的已删除文档。

  2. 在记录删除的单独集合中使用不同的文档。 每当您需要知道某个文档是否已被删除时,都可以查询该集合。 或者在标记删除的不同数据库中创建不同的记录。

真的没有其他选择。 使用现有文档或创建新文档来记录更改。 退出文档是唯一可以查询的内容 - 您无法查询 Firestore 中不存在的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM