我可以自动在 firestore index 中添加索引吗?
我的应用为显示结果制作请求过滤器,引用到 firestore 。但是,如果 firestore无法显示结果,在控制台中,我会看到链接到 firestore 以获取添加索引。因此,如果我推送在 Safari 中的链接,我会看到我的 firestore如何添加索引。
我可以在应用中的后台工作中添加此索引,这样我就可以继续使用该应用,而无需转到Safari?
在将来中,以便每个错误对象自动添加时。
我在 firestore :
中表示索引错误与链接示例:
Error download results: Error Domain=FIRFirestoreErrorDomain Code=9 "The query requires an index. You can create it here: https://console.firebase.google.com/project/*********/database/firestore/indexes?create_index=EgxQaG90b1N0dWRpb3MaEQoNcmV0cm9JbnRlcmlvchACGgkKBXByaWNlEAIaDAoIX19uYW1lX18QAg" UserInfo={NSLocalizedDescription=The query requires an index. You can create it here: https://console.firebase.google.com/project/*********/database/firestore/indexes?create_index=EgxQaG90b1N0dWRpb3MaEQoNcmV0cm9JbnRlcmlvchACGgkKBXByaWNlEAIaDAoIX19uYW1lX18QAg}
我使用的代码:
fileprivate func observeQuery() {
guard let query = query else { return }
stopObserving()
setLoadingScreen()
listener = query.addSnapshotListener { [unowned self] (snapshot, error) in
if let snapshot = snapshot {
DispatchQueue.main.asyncAfter(deadline: time) {
let hallModels = snapshot.documents.map { (document) -> Halls in
if let hallModel = Halls(dictionary: document.data()) {
return hallModel
} else {
fatalError("Error!")
}
}
self.halls = hallModels
self.document = snapshot.documents
self.removeLoadingScreen()
self.tableView.reloadData()
}
} else {
// firestore can't display result and i get an error with link
print("Error download results: \(error!)")
self.tableView.separatorStyle = .none
self.tableView.reloadData()
}
}
}
在这一行我得到一个错误。我认为在这一行中需要编写代码,如果可能,但我不知道该怎么做。:(
} else {
// firestore can't display result and i get error with link
print("Error download results: \(error!)")
self.tableView.separatorStyle = .none
self.tableView.reloadData()
}
在 firestore 中添加索引后,我停止了错误链接。
答案 0 :(得分:2)
没有一种以这种方式以编程方式创建复合索引的方法,您可能不会想要。在测试代码时,这应该是开发流程的一部分,以确定是否需要任何复合索引来处理更复杂的查询。
幸运的是,只需要为您添加的新查询执行一次。
答案 1 :(得分:0)
有一种方法可以使用CLI自动进行索引部署(可能在您的CI / CD中或预先在索引中,因此它们有机会在部署需要它们的应用程序版本之前为所有文档建立索引)。
在项目(即N
)中初始化Firestore时,将创建一个firebase init firestore
文件。在那里,您可以添加所有复合索引,并使用以下命令进行部署:firestore.indexes.json
。
以下是文档的链接:https://firebase.google.com/docs/firestore/query-data/indexing