Как сопоставить данные из Firestore (Swift, кодируемый)

# #swift #google-cloud-firestore #collections #nested #codable

Вопрос:

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

Данные:

 struct mainCollection: Hashable, Codable { 
    var title: String
    var nestedCollection: [nestedCollection]
}

struct nestedCollection: Hashable, Codable { 
    var description: String
}

class ViewModel: ObservableObject {
    @Published var mainCollections = [mainCollection]()    
    private var db = Firestore.firestore()

    func fetch() {
        
        db.collection("mainCollection").addSnapshotListener { (querySnapshot, error) in
            guard let documents = querySnapshot?.documents else {
            return
        }
            
        self.mainCollections = documents.compactMap { (queryDocumentSnapshot) -> mainCollection? in
            return try? queryDocumentSnapshot.data(as: mainCollection.self)
        }
    }
}
 

Комментарии:

1. Здесь и там есть много примеров. Помогать себе.

2. Я буду предлагать вместо использования вложенных коллекций — использовать массив объектов. Для вложенных коллекций — вам нужно прочитать все коллекции отдельно.