【问题标题】:How can I find a specific Product id by sending Product Name?如何通过发送产品名称找到特定的产品 ID?
【发布时间】:2017-01-29 17:38:00
【问题描述】:

我将 Firebase 用于我的商店应用。我想通过为用户取一个产品名称来查找产品的详细信息。我的 JSON 格式如下所示:

 {
product :
 electronic = 
      a  = {
             pname = "iphone 5"
              pprice = "20000"
              pdescription = "Details....."  }
       b = {
           pname = "iphone  6"
              pprice = "30000"
              pdescription = "Details....."  }

 }
 cloths = 
       a =    pname = "shirt"
              pprice = "200"
              pdescription = "Details....."  }
       b = {
           pname = "pents"
              pprice = "300"
              pdescription = "Details....."  }

}

现在,假设我的名字是iphone 5,那我怎么知道产品的其他细节呢?

【问题讨论】:

    标签: ios swift firebase swift2 firebase-realtime-database


    【解决方案1】:
    import Firebase
    FIRApp.configure()
    ref = FIRDatabase.database().reference()
    
    let prod_query = "iphone 5"
    
    ref.observeSingleEventOfType(.Value, withBlock: { (snapshot) in
    
      let product_enum = snapshot.children
      while let product = product_enum.nextObject() as? FDataSnapshot {
    
        product.queryEqualToValue(child:"\(prod_query)").observeSingleEventOfType(.Value, withBlock: { (snap) in
    
          let pid = snap.key as! String
          let pprice = snap.value!["pprice"] as! Int
          let pdescription = snap.value!["pdescription"] as! String
    
        })
    
      }
    
    })
    

    这意味着您知道产品字母是什么,以便您可以提取正确的名称、价格和描述。 while 循环将遍历不同类型的产品(电子产品、服装等)并执行查询,搜索包含您要查找的pname 的子产品 ID。

    Firebase 建议不要使用.Value,最好使用.ChildAdded,因为它在管理添加的新对象时实现了相同的目标。但由于您似乎正在尝试查看静态数据,.Value 工作正常。

    这应该是一个很好的例子,说明如何使用 Firebase 检索数据。但我建议您自己将checking 替换为documentation,以防您有其他问题。

    虽然我真的不介意查找这些信息...使用此站点是为了更好地理解代码,而不是作为个人助理的集合存在。

    在您的问题中展示研究成果可以大有帮助。

    【讨论】:

      【解决方案2】:

      试试这个:-

       FIRDatabase.database().reference().child("product/electronic").queryOrderedByChild("pname").queryEqualToValue("iphone 5").observeSingleEventOfType(.Value , withBlock : {(snap) in 
      
           if let snapDict = snap.value as? [String:AnyObject]{
               for each in snapDict{
                  print(each.0) // product key
                  print(each.1) //product details
              }
             }
      
         })
      

      【讨论】:

        猜你喜欢
        • 2012-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 2019-05-15
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        相关资源
        最近更新 更多