Как использовать запрос данных Firestore на основе записи в UISearchBar? - PullRequest
0 голосов
/ 13 апреля 2020

Я разбиваю на страницы данные из коллекции Firestore, и эта часть работает просто отлично. Однако, когда я ввожу поисковый термин, альтернативный запрос (где я использую arrayContains для поиска ключевых слов) больше не запускается. Я вижу, что многие решения используют параллельный массив, но он не будет работать для разбивки на страницы, если я не ошибаюсь.

Вот мои функции делегата панели поиска:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    searched = true // search is being used
    restaurantArray.removeAll()
    searchQuery = searchText
    queryGenerator(searched: searched, queryString: searchQuery!)
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searched = false // search is not being used
    queryGenerator(searched: searched, queryString: searchQuery!)
}

А вот где я распространяю запросы в зависимости от того, используется поиск или нет:

func queryGenerator(searched: Bool, queryString: String) {

        var query: Query!

        if searched {
            if restaurantArray.isEmpty {
                query = db.collection("Restaurant_Data").whereField("keywords", arrayContains: queryString).limit(to: 4)
            } else {
                query = db.collection("Restaurant_Data").whereField("keywords", arrayContains: queryString).start(afterDocument: lastDocument!).limit(to: 4)
            }
        } else {
            if restaurantArray.isEmpty {

                query = db.collection("Restaurant_Data").limit(to: 4)
            } else {
                query = db.collection("Restaurant_Data").start(afterDocument: lastDocument!).limit(to: 4)
            }
        }

        batchFetch(query: query) // Query firestore and get results
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...