【问题标题】:How can i get the auto generated key of Firebase in Swift?如何在 Swift 中获取 Firebase 的自动生成密钥?
【发布时间】:2018-05-22 04:45:21
【问题描述】:

我有这样的 Firebase 结构。那么如何获取并打印出自动生成键及其索引的字符串?

这是我的代码,但仍打印出 10093

databaseReference.child("Message").child(senderId).child(receiverId!).observe(.value, with: { snapshot in
            self.databaseReference.child("Message").child(self.senderId).child(self.receiverId!).child(snapshot.key).observe(.value, with: { (snap) in
                print("aaa \(snap.key)")
    })
})

我错过了什么或有什么问题?请为我修好它。非常感谢

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    请试试这个。

    databaseReference.child("Message").child(senderId).child(receiverId!).observe(.value, with: { snapshot in
    
        if snapshot.childrenCount > 0 {
           for users in snapshot.children.allObjects as! [DataSnapshot] {
                print(users.key)
           }
        }
    })
    

    DataSnapshot 包含来自数据库位置的数据。它具有键和值属性。

    【讨论】:

    • 没问题。很高兴帮助你:)
    • 你知道如何使用查询一次加载另外 5 个孩子吗?我已经检测到前 5 个孩子中的最后一个孩子,但不知道如何从最后一个孩子中获取接下来的 5 个孩子。我的代码就在下面
    • databaseReference.child("Message").child(senderId).child(receiverId!).queryStarting(atValue: keyFirebase[0]).queryLimited(toFirst: 5).observe(.value, with: { (snapshot) in })
    • 你想要最后 5 个孩子吗?
    • 我想让加载更多功能。第一个加载 5 条消息。然后当用户拉加载更多时,我想从第一次加载中前 5 条消息的最后一条消息中加载更多
    【解决方案2】:

    当您在 firebase 中观察到任何引用时,您会得到一个 DataSnapshot 作为回报。 快照 有一个children 枚举器属性,您可以在该属性上枚举每个孩子。每个孩子都是另一个DataSnapshot。现在,每个快照都有keyvalue。你想要key?只需使用key 属性:

    let databaseRef = Database.database().reference(withPath: "Message").child("1577").child("10093")
    databaseRef.observe(.value) { (snapshot) in
        snapshot.children.forEach({ (child) in
            if let child = child as? DataSnapshot {
                let key = child.key
                print(key)
            }
        })
    }
    

    【讨论】:

      【解决方案3】:
      let databaseRef = Database.database().reference(withPath: "Message").child("1577").child("10093")
       databaseRef.observe(.childAdded)
          { (snapshot:DataSnapshot) in           
              print(snapshot.key)
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-22
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        相关资源
        最近更新 更多