我正在创建一个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中添加一些东西以自动检测它一样?
您知道如何分类吗?您知道当日期早于/等于到期日期时如何删除数据吗?
答案 0 :(得分:1)
Firestore没有任何内置功能来删除过期的文档。如果要删除此类文档,则必须自己构建,或使用现有解决方案之一。
但是在删除过期文档之前,请考虑使用类似这样的查询,简单地不在应用程序代码中显示过期文档
self.db.collection("collection")
.whereField("expiresAt", isGreaterThanOrEqualTo: startTimestamp)
使用上述查询,您的代码将只读取未过期的文档。
要删除过期的文档,请运行反向查询。您可以从应用程序本身运行此程序,但是更常见的是在服务器端环境(例如Cloud Functions)中运行此程序。
您想要的
另请参阅: