2016-09-21 81 views
0

我使用Firebase For My Store应用程序。我想通过为用户提供产品名称来查找产品的详细信息。我的JSON格式如下:如何通过发送产品名称找到特定产品ID?

{ 
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,那我怎么才能找到该产品的其他细节?

回答

0
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你自己,以防万一你有进一步的问题。

虽然我真的不介意查看这些信息......本网站用于更好地理解代码,而不是作为私人助理的集合存在。

显示您的问题中的研究努力可以走很长的路。

0

试试这个: -

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 
     } 
     } 

    })