如何获取用户';他的个人资料中有哪些帖子Swift&;火基

如何获取用户';他的个人资料中有哪些帖子Swift&;火基,swift,firebase,fetch,posts,user-profile,Swift,Firebase,Fetch,Posts,User Profile,试图将用户的帖子提取到其个人资料中。 我正在使用collectionview显示数据,但没有显示任何内容 这是我用来获取用户文章的uid的函数。这是我的Firebase数据库 给Firestore看看。你可能会觉得更好。无论如何,听起来您需要了解如何构建数据库。一旦这样做了,获取/设置/更新/删除/查询就变得微不足道了。见文件 避免嵌套数据 因为Firebase实时数据库允许将数据嵌套到32层的深度,所以您可能会认为 这应该是默认结构。但是,当您在 在数据库中的某个位置,还可以检索其所有子节点

试图将用户的帖子提取到其个人资料中。 我正在使用collectionview显示数据,但没有显示任何内容

这是我用来获取用户文章的uid的函数。这是我的Firebase数据库


给Firestore看看。你可能会觉得更好。无论如何,听起来您需要了解如何构建数据库。一旦这样做了,获取/设置/更新/删除/查询就变得微不足道了。见文件

避免嵌套数据 因为Firebase实时数据库允许将数据嵌套到32层的深度,所以您可能会认为 这应该是默认结构。但是,当您在 在数据库中的某个位置,还可以检索其所有子节点。 此外,当您在中的节点上授予某人读或写访问权限时 您还可以授予他们访问该节点下所有数据的权限。 因此,在实践中,最好将数据结构保持为平面 尽可能的

扁平化数据结构 如果数据被拆分为单独的路径,则也称为 非规范化,可在单独调用中高效下载, 因为它是需要的。考虑这个扁平结构:

创建可缩放的数据 在构建应用程序时,通常最好 下载列表的子集。如果列表 包含数千条记录。当这种关系是静态的并且 单向,您可以简单地将子对象嵌套在 家长

有时,这种关系更加动态,或者可能是必要的 要对该数据进行非规范化。很多时候,您可以通过 使用查询检索数据子集,如中所述 检索数据


嗨,罗恩,谢谢你的建议:)。所以你认为最好是通过避免将帖子划分为失物招领处来将其扁平化?然后简单地把它作为为帖子生成的自动ID中的一个分类?没错。并将photoUrl和username保存在一个单独的
users
集合中,每个用户都使用他们的
firebase.auth().currentUser.uid
存储在该集合中。用户是指在我的体系结构中,我当前拥有uid、username和photoUrl的“author”节点工作正常吗?这仅仅是为了避免将失物招领分为节点,并将其作为一个类别放在帖子中?
    //variables firebase
    var currentUser = Auth.auth().currentUser
    let databaseRef = Database.database().reference()
    let storage = Storage.storage().reference()

    //VARS
    var postsuser = [ProfileUserPosts]()


 func observeUserPosts() {

         let uid = Auth.auth().currentUser?.uid

        databaseRef.child("posts").queryOrdered(byChild: "timestamp").queryEqual(toValue: uid!).observe(.value) { (snapshot) in

            var tempPost = [ProfileUserPosts]()

            for child in snapshot.children {

                if let childSnapshot = child as? DataSnapshot {

                    let dict = childSnapshot.value as? [String: Any]
                    let address = dict!["address"] as? String
                    let breed = dict!["breed"] as? String
                    let phoneuser = dict!["phone"] as? String
                    let photoUrl = dict!["photoUrl"] as? String
                    let url = URL(string: photoUrl!)
                    let post = ProfileUserPosts(address: address!, breed: breed!, phone: phoneuser!, photoUrl: url!)
                    tempPost.insert(post, at: 0)

                }

                self.postsuser = tempPost
                self.postsCollectionView.reloadData()
            }
        }
    }