Я изучаю нумерацию страниц с помощью Firebase. Я использую метод, в котором я сохраняю ключ последнего добавленного элемента на предыдущей странице, поэтому следующая страница может быть продолжена оттуда.
Проблема заключается в том, что при использовании ref.queryStarting(at value: lastItemKey)
для продолжения извлечения элементов изпоследний добавленный ключ, последний элемент повторяется дважды (поскольку queryStarting
включительно).
И поэтому, если я ограничу 5 запросом, я получу только 4 новых элемента, так как 1 будет дубликатом.
Единственное решение, которое я нашел, - это запрос еще одного элемента и удаление повторяющегося, но мне интересно, эффективно ли вообще делать это таким образом. (так как мы тратим по одному элементу в каждом запросе)
Если это поможет, мой код выглядит следующим образом:
// rest of the pages
if let lastItemID = lastItemKey {
itemPageRef = self.itemsRef.queryOrderedByKey().queryStarting(atValue: lastItemID)
.queryLimited(toFirst: UInt(amount))
} else {
// First page of data: we retrieve the first (amount) items
print("We are in the first page of DATA")
itemPageRef = self.itemsRef.queryOrderedByKey().queryLimited(toFirst: UInt(amount))
}
itemPageRef.observeSingleEvent(of: .value, with: { [weak self] (snapshot) in