2016-09-21 53 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 
     } 
     } 

    }) 
相關問題