【问题标题】: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
}
}
})