Swift 快照和映射来自 Firestore 的单个文档

Posted

技术标签:

【中文标题】Swift 快照和映射来自 Firestore 的单个文档【英文标题】:Swift snapshot and mapping a single document from Firestore 【发布时间】:2021-12-30 08:47:37 【问题描述】:

我试图找到一种仅检索单个文档而不是从 Firestore 中检索文档数组的方法,但没有成功。下面是我用于获取广告数组的代码。有人对如何更改仅获取文档有建议吗?

@Published var plantData: [PlantDataModel] = [] -> here I don't want an array

func loadData() 
        print("FIREBASE LOADING DETAIL DATA VIEW")
        db.collection("plantsData").whereField("plantId", isEqualTo: plant.idPlant).addSnapshotListener  querySnapshot, error in
            if let querySnapshot = querySnapshot 
                self.plantData = querySnapshot.documents.compactMap  document  in
                    do 
                        let x = try document.data(as: PlantDataModel.self)
                        return x
                     catch let error 
                        print("Errore fetching data: \(error)")
                    
                    return nil
                

            
        
    

谢谢

【问题讨论】:

【参考方案1】:

替换

            self.plantData = querySnapshot.documents.compactMap  document  in
                do 
                    let x = try document.data(as: PlantDataModel.self)
                    return x
                 catch let error 
                    print("Errore fetching data: \(error)")
                
                return nil
            

            if let first = querySnapshot.documents.first  
                do 
                    let x = try first.data(as: PlantDataModel.self)
                    self.plantData.append(x)
                 catch let error 
                    print("Errore fetching data: \(error)")
                 
            

【讨论】:

以上是关于Swift 快照和映射来自 Firestore 的单个文档的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 Firestore 映射到 Swift 中的结构 - IOS

区分 Firestore 中的第一次查询快照和更改侦听器

Swift Firestore 来自查询的自定义对象,同时使用 snapshotListener 监听实时更新

StreamBuilder 未显示来自 firestore 的数据

来自一个 StreamBuilder 的 Flutter 快照显示在另一个 StreamBuilder 中

使用 Firestore 清理快照