【问题标题】:How to automatically delete firestore documents which are created before N days?如何自动删除 N 天之前创建的 Firestore 文档?
【发布时间】:2019-08-31 01:08:13
【问题描述】:

我有这样的数据结构:

员工(集合)> {EmployeeID}(文档)> 聊天(集合)> {ChatId}(文档)。

在聊天集合中,每个文档都有 3 个字段。 1. senderName, 2. sendTimestamp, 3. messageText.

我想删除超过 7 天(从今天开始)的聊天记录。

我认为可以通过云功能实现,但我真的是基本用户,对云功能了解不多。请注意,我不想自动完成(cron 作业)。我会每天手动完成,或者在我愿意的时候手动完成。

我真的为此搜索了很多,但真的很难。请帮帮我。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我没有尝试任何东西,因为我确实对云功能有非常基本的了解。

标签: android google-cloud-firestore


【解决方案1】:

此任务的很大一部分涉及查询子集合。你可以在这里阅读更多关于这个想法的信息:Firestore query subcollections

在撰写本文时基本上有两种选择:

  1. 查询整个顶级集合(员工),例如db.collection('Employees').get()。然后,您必须遍历每个雇员对象,根据日期范围查询其子集合(聊天)。 Firestore query by date range 了解更多关于在 Firestore 中按日期查询的信息。根据 Employee 文档的数量,这可能会导致大量读取,但就不必更改数据模型/应用程序而言,这是“最简单”的方法。
  2. 重组数据以使子集合 Chat 成为顶级集合。然后您可以按日期对这个顶级集合进行查询。读取次数较少,但可能不太可行,具体取决于此应用是否投入生产/是否愿意进行代码更改。

无论您决定采用哪种方式,函数都肯定能够完成这项任务。需要注意的一点是,函数使用 Admin SDK 执行,这意味着它基本上可以忽略 Firestore 上设置的安全规则。

【讨论】:

  • 感谢您的回答。我认为第一个选项很有帮助,但读取量确实是一个严重的问题,因为我已经有超过 5k 条记录。由于这些现有数据,您的第二个选项没有用。感谢您的回答。
猜你喜欢
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 2021-06-07
  • 2021-07-15
  • 2020-03-03
  • 2018-08-27
相关资源
最近更新 更多