如何从实时数据库中检索子项的所有密钥?

How can I retrieve all the keys from a child from Realtime Database?

提问人:Miguel Carvalho 提问时间:9/28/2023 最后编辑:Miguel Carvalho 更新时间:9/28/2023 访问量:31

问:

我在尝试获取我的孩子拥有多少个键的数量(计数)以及检索包含所有键的数组时遇到了问题。

现在,我在子“通知”下有 4 个键。每次我尝试从那个孩子那里检索密钥计数时,我不知道为什么,Firebase 会返回整数 49。有时它会给我 48 或 56 分。这是有道理的,因为即使我以某种方式从所有孩子那里得到了所有的钥匙,我仍然会比它显示的更多或更少。

运行代码后,我的文本字段中也只显示最新的键,并且拒绝按预期显示所有键。

这是我的代码:

func retrieveNotifications() {
    let databaseRef = Database.database().reference()
    let dataName = Auth.auth().currentUser!.uid
    let ref = databaseRef.child("User_Information").child("\(dataName)").child("Notifications")
    
    ref.observeSingleEvent(of: .value , with: { (snapshot) in
            for notifications in snapshot.children {
                let snap = notifications as! DataSnapshot
                let key = snap.key
                let value = snap.value
                let count = snap.key.count
                
                if count > 0 {
                    self.notificationNumber.isHidden = false
                    self.noNewNotificationsMessage.isHidden = true
                    self.notificationsText.isHidden = false
                    self.clearButton.isHidden = false
                    self.notificationNumber.text = "\(count) notifications"
                    self.notificationsText.text = "\(key)"
                } else {
                    self.notificationNumber.isHidden = true
                    self.notificationsText.isHidden = true
                    self.clearButton.isHidden = true
                    self.noNewNotificationsMessage.isHidden = false
                }
            }
        })
}

我已经看了几个小时的代码,非常感谢任何帮助,也许我没有看到明显的东西。

在这一点上,我已经尝试了我能想到的一切。没有任何效果。

swift firebase-实时数据库

评论


答:

0赞 Frank van Puffelen 9/28/2023 #1

您是:

  1. 读取用户的通知。
  2. 然后循环通知。
  3. 然后,对于每个通知,您可以确定其密钥的长度

如果要确定 下的子节点数,则如下所示:Notifications

ref.observeSingleEvent(of: .value , with: { (snapshot) in
    let count = snapshot.childrenCount
    ...

另请参阅 childrenCount 属性的参考文档

评论

0赞 Miguel Carvalho 9/28/2023
非常感谢,它对我的计数问题有用。非常非常感激!