[英]how to get accurate document deletion time with firestore document
所以我的目标是能够创建一个任何日期的事件,如果日期过期,它将能够删除文档。 我遇到的问题是,当我在当前时间后 25 分钟后的任何时间创建一个日期事件时,由于我的自动删除 function,文档会在我创建它时自动删除,但我不明白为什么它删除。 我像这样设置了 function ...
func deleteExpiredCreatedEvents() {
setupDate { (dateforexpiry) in
self.db.collection(Constants.Firebase.schoolCollectionName).whereField("expiresAt", isLessThanOrEqualTo: dateforexpiry!).addSnapshotListener { (querySnapshot, error) in
if error != nil {
print("Error fetching docs/User deleted account.")
} else {
for document in querySnapshot!.documents {
let documentident = document.documentID
let docalgoliaid = document.get("algoliaObjectID") as! String
deleteIndex.deleteObject(withID: ObjectID(rawValue: docalgoliaid)) { (result) in
if case .success(let response) = result {
print("Record Deleted!: \(response.wrapped)")
}
}
self.db.document("school_users/\(self.user?.uid)/events/\(documentident)").delete { (err) in
if err != nil {
print("Errr")
} else {
print("No errs")
self.tableView.reloadData()
}
}
}
}
}
}
}
我基本上使用这个 function 作为自动删除任务,我将它与这个 function 结合起来完成工作
func setupDate(completion: @escaping ((String?) -> ())) {
formatter.dateFormat = "EEEE, MMMM d yyyy, h:mm aZ"
formatter.locale = .current
formatter.timeZone = .current
let dateToString = formatter.string(from: rightNow)
completion(dateToString)
}
因此,我确定问题主要源于此 function, rightNow
仅等于Date()
,并且我将其格式化为创建事件时文本在我的dateTextField
中的方式。 我尝试使用时区,在格式末尾添加-0000
以获得正确的时区,将内容注释掉,但它仍然无法按照我的意愿工作。
我测试了在当前时间之前创建具有到期日期的事件,它甚至在出现在完美的单元格中之前自动删除。 当我创建一个日期为当前时间 25 分钟或以下的事件,然后检查该时间之后单元格是否存在时,它也消失了,这也是完美的。 一旦我在当前时间后 25 分钟创建日期的事件,单元格就会自动删除,并且不会显示,这让我感到困惑。
另外,我刚刚意识到,当时间发生变化并且我检查过过期日期的单元格时,它们仍然显示在 tableView 中,所以只有一大堆我无法弄清楚的错误。
如果有人能指出我需要添加或调整的问题或其他内容,那就太好了,谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.