一尘不染

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

swift

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

我可以使用从数据库中获取所有用户

       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,电子邮件,姓名,性别的用户数组。但是我只想获取电子邮件和用户名。 有没有一种方法只能从数据库中获取指定的字段?


阅读 274

收藏
2020-07-07

共1个答案

一尘不染

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

话虽如此,如果您的用例有可能,我建议您出于查询仅检索所需信息的目的而对数据进行非规范化。

为此,您可以有一个单独的节点,可以将其称为Users- NameandEmailList。现在,在此表中,将用户uid作为您的子项,并且每个条目应仅包含一个电子邮件和姓名字段。

像这样的东西:

Users-NameandEmailList :{

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

                        }

我同意这可能会导致数据复制,但是如果您想最大程度地减少下载冗余并优化速度,那么这就是路要走!

2020-07-07