Как перейти к следующему документу в коллекции, если предыдущий документ не прошел какое-то условие, которое мы написали, Firestore? - PullRequest
1 голос
/ 13 января 2020

Когда пользователь нажимает кнопку findDeal, первая сделка (документ) извлекается из коллекции под названием «сделки». После получения я в основном проверяю, существует ли эта сделка (документ) в истории сделок пользователя. Если это произойдет, то я хочу перейти к следующей сделке (документу) в коллекции и повторить тот же процесс. Если он не существует в истории сделок пользователя, я перехожу к отображению сделки для пользователя.

Цель: я не хочу показывать пользователю сделки, которые он уже видел, поэтому я просто хочу игнорировать документ, если он уже был просмотрен пользователем, и перейти к следующему.

Я не знаю, как мне получить следующий документ.

Исследование, которое я провел: я понимаю, что это можно сделать с помощью нумерации страниц, но я не могу обернуть его вокруг своей жизни. В этом случае использования нет кнопок или слушателей реального времени, которые запускают нумерацию страниц, так как это работает?

    fileprivate func findDealPressed(){
        Firestore.firestore().collection("deals").order(by: "timestamp").limit(to: 1).getDocuments { (snapshot, error) in
            if let error = error{
                print(error.localizedDescription)
                return
            } else {
                if let docs = snapshot?.documents, !docs.isEmpty{
                    for document in docs{
                        let docValues: [String:Any] = document.data()
                        let dealId = docValues["dealId"] as! String
                        let dealAlreadySeenByUser: Bool = self.checkIfDealAlreadySeenByUser(dealId: dealId)
                        if dealAlreadySeenByUser{
                            //This is where I want to proceed to the next document in the collection if the value is true i,e if the user has already seen the deal.
                        } else {
                            //Proceed to show the deal to the user
                            self.label = docValues["dealName"] as! String
                        }
                    }
                }
            }
        }
    }

    fileprivate func checkIfDealAlreadySeenByUser(dealId: String) -> Bool{
        //This is where I check and confirm it is true or false, whether the user has already seen the deal or not
        return true
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...