经过日期后从Firestore中删除文档

时间:2019-11-16 13:02:48

标签: ios swift google-cloud-firestore

我正在创建一个IOS应用程序,其中有一些折扣代码,我希望它们在特定日期后过期。

有什么方法可以自动删除已过期的文档?

示例:假设我创建了一个折扣代码,该折扣代码应在“ 2019-12-20 12:00”到期,如何在时间流逝后删除此文档?在Firestore中有什么方法可以做到这一点?还是可以将当前日期与到期日期进行比较,如果该日期早于或等于时间,则将其删除?如果是,该怎么办?

到目前为止,我已经尝试过:

                let expiring = data["expiring"] as? String

                let dateNow = Date()
                let dateFormatter = DateFormatter()
                dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
                let currentDate = dateFormatter.string(from: dateNow)

                let date = dateFormatter.date(from:expiring!)

                print(date, " ", currentDate)

但是当我打印出“日期”时。返回“ nil”,并且currentDate返回正确的日期。当我让他们两个都返回正确的值时,我想添加一个if语句来检查“日期”是否早于或等于正确的日期和时间,如果是这种情况,则将其删除。

有没有更简单的方法可以做到这一点?像在Firestore中添加一些东西以自动检测它一样?

您知道如何分类吗?您知道当日期早于/等于到期日期时如何删除数据吗?

1 个答案:

答案 0 :(得分:1)

Firestore没有任何内置功能来删除过期的文档。如果要删除此类文档,则必须自己构建,或使用现有解决方案之一。

但是在删除过期文档之前,请考虑使用类似这样的查询,简单地不在应用程序代码中显示过期文档

self.db.collection("collection")
    .whereField("expiresAt", isGreaterThanOrEqualTo: startTimestamp)

使用上述查询,您的代码将只读取未过期的文档。


要删除过期的文档,请运行反向查询。您可以从应用程序本身运行此程序,但是更常见的是在服务器端环境(例如Cloud Functions)中运行此程序。

您想要的

  1. 运行查询以确定所有过期的文档。
  2. 查看这些文档。
  3. 使用deleting documents中显示的代码逐一删除它们。

另请参阅: