我有一个通过Google Cloud Functions链接到Firestore数据库的Algolia索引。当我的Firestore更新时,Google Cloud Functions将运行并更新我的Algolia索引。我将Algolia索引用于我的应用程序的搜索功能,以及在对象首次显示时将对象初始下载到我的表格视图中。问题是,当我从Firestore中的对象删除属性时,会通知我何时进行更新,而不是何时进行Algolia索引更新(显然是因为它是Firestore方法)。我使用的方法是这样,在这里我有一个转义的bool闭包,指示成功与否:
deleteObjectRef.updateData([
"Users": FieldValue.arrayRemove([uid])
]) { err in
if let err = err {
print("Error deleting property: \(err)")
completion(false)
} else {
print("property successfully deleted")
completion(true)
}
}
当完成返回true时,Firestore数据库已更新,尽管在运行云功能时,这与更新Algolia索引之间存在时滞。我想在更新Algolia索引时重新加载表,而不是在更新Firestore数据库时重新加载表,这是我目前唯一的选择。更新Algolia索引后,如何重新加载表视图数据?我目前唯一能想到的解决方案是使用一个计时器,该计时器在我确认Firestore已更新后立即开始,然后在几秒钟后重新加载表,以希望此时可以更新Algolia。不喜欢使用它,因为它有缺陷...