Firestore - 云功能 - 获取删除文档的用户的 uid
Firestore - Cloud functions - Get uid of user who deleted a document
我正在尝试在删除 firestore 中的文档的任何经过身份验证的用户的 onWrite 云功能中获取 UID(不是没有此问题的实时数据库)。原因是......我正在尝试创建一个日志,记录对集合中的文档执行的所有操作。我必须使用云功能,因为客户端可以假设 create/edit/delete 一个文档,然后阻止发送相应的日志条目。
我在其他 Whosebug 问题中看到过,例如:
firestore 不会在 onWrite 函数中包含 firestore 的任何身份验证数据,并且接受的解决方法是包含 updated_by
、created_by
、created_at
、[=文档中的 13=] 为 created/updated,已使用 firebase 权限进行验证。这对于插入或更新文档非常有用,但是 onWrite
云函数中删除的文档只有 change.before
数据,没有 change.after
数据,这意味着您无法查看谁删除了文档,最多谁在删除之前最后更新了文档。
我正在尝试以下一些解决方法(但他们有严重的批评者):
- 在文档要被删除之前发送更新。 问题 -> 可能有时间问题、反跳问题,需要杂乱的权限以确保只有在进行更新时才会删除文档。
- 用标记为删除的字段对其进行更新,并在云函数中观察此标记,然后进行删除。 问题 -> 在删除项目之前导致非常明显的滞后。
有没有人有更好的方法来做这样的事情?谢谢!
根本不要删除文档。只需添加一个名为“deleted”的字段,将其设置为 true,然后使用删除它的用户的 UID 添加另一个字段。在您的查询中使用这些新字段来决定是否要为任何给定查询处理已删除的文档。
在记录删除的单独集合中使用不同的文档。每当您需要知道文档是否已被删除时查询该集合。或者在不同的数据库中创建不同的记录来标记删除。
确实没有其他选择。使用现有文档或创建新文档来记录更改。现有文档是唯一可以查询的内容 - 您无法查询 Firestore 中不存在的数据。
我正在尝试在删除 firestore 中的文档的任何经过身份验证的用户的 onWrite 云功能中获取 UID(不是没有此问题的实时数据库)。原因是......我正在尝试创建一个日志,记录对集合中的文档执行的所有操作。我必须使用云功能,因为客户端可以假设 create/edit/delete 一个文档,然后阻止发送相应的日志条目。
我在其他 Whosebug 问题中看到过,例如:
firestore 不会在 onWrite 函数中包含 firestore 的任何身份验证数据,并且接受的解决方法是包含 updated_by
、created_by
、created_at
、[=文档中的 13=] 为 created/updated,已使用 firebase 权限进行验证。这对于插入或更新文档非常有用,但是 onWrite
云函数中删除的文档只有 change.before
数据,没有 change.after
数据,这意味着您无法查看谁删除了文档,最多谁在删除之前最后更新了文档。
我正在尝试以下一些解决方法(但他们有严重的批评者):
- 在文档要被删除之前发送更新。 问题 -> 可能有时间问题、反跳问题,需要杂乱的权限以确保只有在进行更新时才会删除文档。
- 用标记为删除的字段对其进行更新,并在云函数中观察此标记,然后进行删除。 问题 -> 在删除项目之前导致非常明显的滞后。
有没有人有更好的方法来做这样的事情?谢谢!
根本不要删除文档。只需添加一个名为“deleted”的字段,将其设置为 true,然后使用删除它的用户的 UID 添加另一个字段。在您的查询中使用这些新字段来决定是否要为任何给定查询处理已删除的文档。
在记录删除的单独集合中使用不同的文档。每当您需要知道文档是否已被删除时查询该集合。或者在不同的数据库中创建不同的记录来标记删除。
确实没有其他选择。使用现有文档或创建新文档来记录更改。现有文档是唯一可以查询的内容 - 您无法查询 Firestore 中不存在的数据。