SwiftUI и Firebase - Ошибка потока: «Не найдено: нет документа для обновления»: - PullRequest
0 голосов
/ 01 августа 2020

Итак, у меня есть программа, которая при открытии ищет определенное c имя документа в определенной c коллекции (оба указаны) и, когда оно найдено, копирует имя документа и запускает слушателя . Если оно не находит имя документа через интервалы 5 x 5 секунд, приложение останавливается. По какой-то причине, когда я запускаю код, после первой проверки я получаю около тысячи записей этой ошибки:

[Firebase / Firestore] [I-FST000001] WriteStream (7ffcbec0eac8) Ошибка потока: ' Не найдено: нет документа для обновления:

Вот код, который я использую для вызова firestore:

let capturedCode: String? = "party"

.onAppear(perform: {
            
            Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { timer in
                print("running code check sequence")
                if let code = capturedCode {
                    calcCloud.checkSessionCode(code)
                    
                    if env.doesCodeExist {
                        print("code found! applying to environment!")
                        env.currentSessionCode = code
                        calcCloud.watchCloudDataAndUpdate()
                        allClear(env: env)
                        timer.invalidate()
                    }
                    else if timerCycles < 5 {
                        
                        timerCycles += 1
                        print("code not found, this is cycle \(timerCycles) of 5")
                        
                    } else {
                      print("could not find document on firebase, now committing suicide")
                        let x = ""
                        let _ = Int(x)!
                    }
                }
            }
        })

вот код, который я использую для проверки firebase:


    func checkSessionCode(_ code: String) {
            print("checkSessionCode running")
                
                let docRef = self.env.db.collection(K.sessions).document(code)
                docRef.getDocument { (document, error) in
                    if document!.exists {
                        print("Document data: \(document!.data())")
                        self.env.doesCodeExist = true
                    } else {
                        print("Document does not exist")
                        self.env.doesCodeExist = false
    
                    }
                }
            }

и вот код, который должен быть выполнен, если код найден и применен:

func watchCloudDataAndUpdate() {
        
        env.db.collection(K.sessions).document(env.currentSessionCode!).addSnapshotListener { (documentSnapshot, error) in
            guard let document = documentSnapshot else {
                print("Error fetching snapshot: \(error!)")
                return
            }
            guard let data = document.data() else {
                print("Document data was empty.")
                return
            }

Где я go ошибся, и что это за ошибка ... спасибо заранее :)

РЕДАКТИРОВАТЬ: Для ясности кажется, что ошибки начинаются после того, как onAppear завершает выполнение ...

1 Ответ

1 голос
/ 01 августа 2020

Вот почему мне нужно прекратить кодирование после часу ночи ... на своем симуляторе я удалил приложение и перезапустил его, и все снова заработало ... иногда самые простые ответы оказываются правильными ...

...