Прослушайте любой новый документ, добавленный в коллекцию в firestore - PullRequest
0 голосов
/ 14 октября 2019

Существующие решения у меня не работают, я пробовал. Я пытаюсь получить сообщения в потоке, который хранится в Firestore. Это текущая структура коллекции чатов:

enter image description here

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

func loadChat() {

    self.showWaitOverlayWithText("Loading")
    let db = Firestore.firestore().collection("Chats")
        .whereField("user1ID", isEqualTo: Auth.auth().currentUser?.uid ?? "Not Found User 1")
        .whereField("user2UID", isEqualTo: user2UID ?? "Not Found User 2")

    db.getDocuments { (querySnap, error) in
        if let error = error {
            print("Error: \(error)")
            return
        } else {
            let doc = querySnap?.documents.first

           doc?.reference.collection("thread").addSnapshotListener(includeMetadataChanges: true, listener: { (threadQuery, error) in
                //Never comes here
                for message in threadQuery!.documents {
                    self.removeAllOverlays()
                    print("Data: \(message.data())")
                }
            })
        }
    }
}

Это никогда не выполняется collection("thread").addSnapshotListner.

1 Ответ

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

Итак, проблема заключалась в неправильном ключе в запросе: «user2UID» вместо «user2ID». Мы смогли точно определить эту проблему, проверив, были ли необязательные значения (doc, querySnap) нулевыми или нет. doc было равно нулю, querySnap не было, но количество документов было равно нулю. Это помогло нам понять, что проблема была в строке

let db = Firestore.firestore().collection("Chats")
       .whereField("user1ID", isEqualTo: Auth.auth().currentUser?.uid ?? "Not Found User 1")
       .whereField("user2UID", isEqualTo: user2UID ?? "Not Found User 2")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...