如何通过发送产品名称找到特定的产品ID?

时间:2016-09-21 12:50:24

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

我使用Firebase For My Store App。我想通过为用户提供产品名称来查找产品详细信息。我的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,那么我该如何找到该产品的其他细节呢?

2 个答案:

答案 0 :(得分: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 nodejs site

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

在您的问题中展示研究工作可以有很长的路要走。

答案 1 :(得分: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
        }
       }

   })