繁体   English   中英

getDocuments() 函数多次获取相同的数据

[英]getDocuments() function getting the same data more than one time

我正在从关系数据库迁移到 NOSQL,并且我已经阅读了整个 Firebase 文档,现在我正在着手研究项目以了解更多信息。

我想做的是:我有一个user_profile ,其中Auth创建的每个用户都将获得一个文档。

在本文档中,我有一个名为groups的数组,它显示了该用户加入的所有组。

我需要根据登录的用户检索该组的列表。

*这是我目前的数据库*

我的数据库

然后我使用 getDocuments() 从数据库中检索此信息。

我需要得到的是一个带有 group_id 的字符串数组(根据第二张图片)。

我当前的代码正在检索我需要的信息,但它将所有 ID 作为一个对象获取。 因此,如果我有 4 个组,它将检索 4 个对象,其中包含用户已加入的所有 4 个组。

func getGroups() -> [String] {

    let currentUser = Auth.auth().currentUser?.uid
    let db = Firestore.firestore()
    var groups = [""]
    var groupsArray = [""]

        db.collection(K.Collections.userProfile)
            .whereField(K.DBFields.UserProfile.userId, isEqualTo: currentUser!)
            .getDocuments { (snapshot, error) in
            if let error = error  {
                print(error)
            } else {

                for document in snapshot!.documents {
                    groups = (document.get("groups")) as! [String]
                    //groupsArray.append(groups)
                    print("Group ID: \(groups)")
                    }
            }
        }
return groups
}

我得到的结果如下:

roup ID: ["8m0W7cQLuSjQCJes2fpL", "l84GnZSpIUs43cXO13Qm", "unb0LPYOttDN6WogRXDt", "ohG09dwyVrAd6GcXa6mx"] Group ID: ["8m0W7cQLuSjQCJes2fpL", "l84GnZSpIUs43cXO13Qm", "unb0LPYOttDN6WogRXDt", "ohG09dwyVrAd6GcXa6mx"] Group ID: ["8m0W7cQLuSjQCJes2fpL", "l84GnZSpIUs43cXO13Qm ", "unb0LPYOttDN6WogRXDt", "ohG09dwyVrAd6GcXa6mx"] 组 ID: ["8m0W7cQLuSjQCJes2fpL", "l84GnZSpIUs43cXO13Qm", "unb0LPYOttDN6WogRXDt", "ohG09dwyVrAd6GcXa6mx"]

我尝试了很多不同的方法来尝试获取正确的数据,但没有奏效。

再一次,我只想得到这个数组作为结果:var groups = [ "8m0W7cQLuSjQCJes2fpL", "l84GnZSpIUs43cXO13Qm", "unb0LPYOttDN6WogRXDt", "ohG09dwyVrAd6GcXa6mx"]

非常感谢莱昂纳多达马托

您正在以[String] (字符串数组)的形式从groups中检索值。 但是随后您将该字符串数组打印为单个值。

如果你想在 Swift 中访问[String]的各个元素,你可以遍历它:

groups = (document.get("groups")) as! [String]
for group in groups {
    print("Group ID \(group).")
}

另请参阅有关 访问数组值的 Swift 文档。

我对 Swift 不太了解,但是在“节点”中,当我尝试使用 for 代替 map 时出现了不同的结果你应该使用以下内容:

让 dataDescription = snapshot.data().map(String.init(describing:))?? “零”

print("文档数据:(dataDescription)")

显示在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM