【问题标题】:firebase real time dB retrieving of specific data from multiple users in swiftfirebase 实时 dB 快速检索来自多个用户的特定数据
【发布时间】:2021-04-04 16:53:44
【问题描述】:

所以我这几天在一个新项目上工作,但我遇到了无法解决的问题,希望有人能帮助我。 我正在开发 iOS 应用程序并将所有用户数据存储在 Firebase Real time dB 上。 我的主要目标是从特定位置的所有用户那里获取特定数据, 例如: 在用户内部,我在 dB 中拥有所有用户的不同 uID。在他们每个人都有用户名,我想检索所有用户的用户名。 将来我想在“位置”下存储每个用户的位置。我想让所有用户知道他们的位置是“纽约”。 我很高兴能得到一些想法来解决这个问题! 谢谢!

users

  XLS37UqjasdfkKiB
      username: "Donald"

  ei8d4eYDafjQXyZ
      username: "Barak"

  etcj0lbSX5Oasfj
      username: "Abdul"

  rglmlG6Rasdgk5j
      username: "Ron" 

【问题讨论】:

    标签: ios swift firebase-realtime-database


    【解决方案1】:

    你可以:

    1. /Users加载所有JSON。
    2. 循环遍历snapshot.children
    3. 然后获取每个孩子的username属性的值。

    这些也是 Firebase 实时数据库最常见的导航策略,因此您可以将它们应用于几乎任何读取操作。

    类似这样的:

    Database.database().reference().child("isers").observe(.value, with: { (snapshot) in
        if !snapshot.exists() {
             print("No users found")
        } else {
            for case let userSnapshot as DataSnapshot in snapshot.children {
                guard let dict = userSnapshot.value as? [String:Any] else {
                    print("Error")
                    return
                }
                let username = dict["username"] as? String
                print(username)
            }
        }
    })
    

    另见:

    【讨论】:

    • 嘿弗兰克!谢谢您的帮助!抱歉耽搁了,我是这个网站的新手)),我实现了代码,但出现了 2 个错误,在范围内找不到“snapShot”,在范围内找不到“孩子”也是如此。还有,为什么有两种类型的快照? (快照和快照)你能澄清一下吗?
    • 两者都是代码中的拼写错误。我现在把它们固定在上面了。
    • 它成功了!非常感谢您的帮助!我可以问额外的问题吗?如何获取每个用户名的 UID?我试过 let uid = dict["uid"] as?字符串它不起作用
    • 由于您使用UID作为数据库中节点的键,因此您可以在循环中找到它们为userSnapshot.key
    • 没有运算符可以从查询结果中排除特定节点,因此您必须过滤该客户端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多