ios - 从 Firebase 数据库中获取特定字段

标签 ios swift firebase firebase-realtime-database firebase-authentication

我正在开发 firebase 项目,我将用户信息存储在表中。 现在我的要求是在表中显示所有用户。 这是我的数据库快照

enter image description here

我可以使用

从数据库中获取所有用户的信息
       if let user = FIRAuth.auth()?.currentUser {
            self.ref?.child("Users").observeSingleEvent(of: .value, with: { (snapshot) in
                // Get user value
                let value = snapshot.value as? NSDictionary
                let name = value?["name"] as? String ?? ""
                let email = value?["email"] as? String ?? ""


            // ...
            }) { (error) in
                print(error.localizedDescription)
            }
        }

上面的代码返回我的用户数组,其中包含 bod、电子邮件、姓名、性别。 但我只想获取电子邮件和用户名。 有没有办法只从数据库中获取指定字段?

最佳答案

当您读取节点时,您必须检索其全部内容。因此,无法从读取路径时返回的数据中仅获取特定字段。

话虽如此,如果您的用例可行,我建议您对数据进行非规范化,以便查询仅检索您需要的信息。

为此,您可以拥有一个单独的节点,其名称类似于Users-NameandEmailList。现在,在此表中,将用户 uid 作为您的子键,每个条目应只有一个电子邮件和姓名字段。

类似这样的:-

Users-NameandEmailList :{

       user1key :{
             name : "ABC"
             email : "abc@abc.com"
                 },
       user2key : {..},

                        }

我同意这可能会导致数据复制,但如果您想最大限度地减少下载冗余并优化速度,那么这就是正确的选择!

关于ios - 从 Firebase 数据库中获取特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342751/

相关文章:

iOS Storyboarding App-Wide 元素(持久性侧边栏)

ios - UILongPressGestureRecognizer 和 UIPanGestureRecognizer 组合

java - 无法从 Firebase 存储下载图像

iOS - FileManager 不会删除文档目录中的 json 文件

iphone - predicateForEventsWithStartDate 不起作用

xcode - 使用 Swift Package Manager 时如何生成用于开发的 Xcode 项目文件

ios - 一旦有完整的行,如何删除 SKSpriteNode? (像俄罗斯方 block )

ios - 核心数据问题 : -[NSManagedObject setValue:]: unrecognised selector sent to instance

android - 时间戳(firebase)转换错误到日期实用程序

firebase - 持续 session ?