遍历 Firebase 中一个孩子的所有键

Posted

技术标签:

【中文标题】遍历 Firebase 中一个孩子的所有键【英文标题】:Iterate through all keys of one child in Firebase 【发布时间】:2017-04-09 18:51:11 【问题描述】:

这是我在 Firebase 实时数据库中的结构:

我想获得所有产品的名称。

这是我尝试过的:

database.child("customerID").child("productTopSeller").observe(FIRDataEventType.value, with:  (snapshot) in
  for childSnap in snapshot.children.allObjects 
    let product = childSnap as! FIRDataSnapshot
    print(product.value?["name"] as? String ?? "")
  
)  (error) in
  print(error.localizedDescription)

但这给了我以下错误:

Type 'Any' has no subscript members.

我知道我需要以某种方式投射快照,但不知道该怎么做。使用 Swift 3。

【问题讨论】:

你试过用谷歌搜索error吗? 【参考方案1】:

您需要将product.value 转换为[String:Any]。看广告下面的代码

ref.child("customerID").child("productTopSeller").observeSingleEvent(of: .value, with:  snapshot in
  let names = snapshot
      .children
      .flatMap  $0 as? FIRDataSnapshot 
      .flatMap  $0.value as? [String:Any] 
      .flatMap  $0["name"] as? String 

  print(names)    
)

请注意,我使用 observeSingleEvent 是为了只从 Firebase 获得一个回调。 您的代码确实使用了observe,而不是每次观察到的数据确实发生变化时都会产生一个回调。

【讨论】:

以上是关于遍历 Firebase 中一个孩子的所有键的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历对象字典及其键

在 Firebase 数据库中读取孩子

获取 Firebase 用户中最小的孩子

Firebase 存储上传图像不适用于亚马逊火灾(型号:Fire 7)

Swift 5 Firebase 按子/键查询

如何在firebase数据库中获取所有孩子的数据?