func fetchNextPage() async {
guard !isLoading, !reachedEnd else { return }
isLoading = true
defer { isLoading = false }
let excluded = Array(BlockService.shared.blocked.prefix(10))
var query = db.collection("posts")
.whereField("isReply", isEqualTo: false)
.order(by: "timestamp", descending: true)
if !excluded.isEmpty {
query = query.whereField("ownerUid", notIn: excluded)
}
if let lastDoc { query = query.start(afterDocument: lastDoc) }
query = query.limit(to: pageSize)
do {
let snap = try await query.getDocuments()
guard !snap.documents.isEmpty else {
reachedEnd = true
return
}
let items = snap.documents.compactMap { try? $0.data(as: Post.self) }
let posts = await PostService.hydratePosts(items)
self.posts.append(contentsOf: posts)
lastDoc = snap.documents.last
if snap.documents.count < pageSize { reachedEnd = true }
} catch {
Crashlytics.crashlytics().record(error: error)
#if DEBUG
print("DEBUG: Unable to fetch posts with error: \(error.localizedDescription)")
#endif
}
}
В настоящее время оператор «не вход» в Firestore ограничен 10 значениями, что не позволяет пользователям блокировать более 10 других пользователей. Есть ли эффективный способ обойти это ограничение и поддержать неограниченное количество заблокированных пользователей? Я не хочу фильтровать клиентскую часть. Я хочу сохранить все в виде запроса, чтобы можно было реализовать правила Firestore.
#if DEBUG print("DEBUG: Unable to fetch posts with error: \(error.localizedDescription)") #endif } } [/code] В настоящее время оператор «не вход» в Firestore ограничен 10 значениями, что не позволяет пользователям блокировать более 10 других пользователей. Есть ли эффективный способ обойти это ограничение и поддержать неограниченное количество заблокированных пользователей? Я не хочу фильтровать клиентскую часть. Я хочу сохранить все в виде запроса, чтобы можно было реализовать правила Firestore.