【发布时间】:2020-08-10 08:19:21
【问题描述】:
我有这个从集合中获取文档的函数。我从 Firestore 文档中得到了这个逻辑,但我不明白 addSnapshotListener 的目的。
在真实场景中我需要:
首先运行第一个查询,获取最后一个文档并将其传递给下一个查询等等,对吗?
所以这意味着在每次查询之后我还需要返回最后一个文档?
如果是这种情况,为什么我需要addSnapshotListener?我也可以从.getDocuments() 得到lastSnapshot
class HomeViewModel: ObservableObject, LoadProtocol {
var firestoreService: FirestoreService = FirestoreService()
@Published var items: [Item] = []
let first: Query = Firestore.firestore().collection("items").limit(to: 1)
var next: Query = Firestore.firestore().collection("items").limit(to: 1)
init() {
self.first.addSnapshotListener { (snapshot, error) in
guard let snapshot = snapshot else {
print("Error retrieving cities: \(error.debugDescription)")
return
}
guard let lastSnapshot = snapshot.documents.last else {
// The collection is empty.
return
}
// Construct a new query starting after this document,
// retrieving the next 25 cities.
self.next = self.firestoreService.db.collection("items")
.start(afterDocument: lastSnapshot)
// Use the query for pagination.
}
}
func refresh() {
self.firestoreService.fetchCollection(query: self.next) { (result: Result<[Item], Error>) in
switch result {
case .success(let items):
self.items += items
self.addToCategories()
case .failure(let error):
print(error)
}
}
}
}
【问题讨论】:
标签: ios swift firebase google-cloud-firestore swift5