ios - повторение ключей при разбивке на страницы с помощью Firebase - PullRequest
0 голосов
/ 22 октября 2019

Я изучаю нумерацию страниц с помощью 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 

1 Ответ

0 голосов
/ 22 октября 2019

Запрос перекрывающегося дочернего узла между страницами является единственным способом, который поддерживает Firebase API. Поскольку другого способа сделать это не существует, более эффективного способа не существует.

Тем не менее, обычно он достаточно эффективен, особенно если вы используете размер страницы более 25 дочерних узлов, что также болееразумно в большинстве случаев, которые я видел.

...