我正在嘗試使用Firebase設置新項目,並且正在努力處理非關係數據庫和查詢系統。我已經閱讀了指南,尤其是那些關於數據結構的指南。 這是我的使用案例:我必須處理一些產品,每個產品都有一個名稱和一個家庭,這也是一個實體。 我已經創建了下面的結構,試圖遵循指導原則和示例。Firebase - iOS SDK - 按子值篩選
{
"families" : [ {
"name" : "easy",
"products" : [ 10, 11 ]
}, {
"name" : "ir33",
"products" : [ 12, 13 ]
} ],
"products" : {
"10" : {
"family" : 0,
"name" : "Matita"
},
"11" : {
"family" : 0,
"name" : "Penna"
},
"12" : {
"family" : 1,
"name" : "Gomma"
}
}
}
給定一個家庭,我想選擇所有的產品。 我的第一個解決方案是訪問家庭,檢索ID數組,然後執行請求(每個ID一個)。它有效,但這種方法可能會導致大量的請求。 有沒有更好的方法來獲得?例如,我在這一個嘗試,但它不工作:
ref.child("products").queryOrderedByChild("family").queryEqualToValue("0", childKey: "family").observeSingleEventOfType(.Value, withBlock: { snap in
print("snap \(snap)")
})
但它始終打印Snap (products) <null>
。
UPDATE
我可以用這個查詢訪問給定家族的產品:
ref.child("products").queryOrderedByChild("family").queryEqualToValue(0).observeSingleEventOfType
順便說一句,現在我有這個警告,同時運行我的測試:
[ FirebaseDatabase]使用未指定的索引。考慮在/ products上添加「.indexOn」:「family」以獲得更好的性能
在此先感謝您的幫助!
你可以嘗試從queryEqualToValue中的「0」中刪除引號嗎?我想現在你正在比較一個字符串和一個數字,這就是爲什麼你沒有得到任何結果。 –
忽略它,它只是一個建議警告。 – Dravidian
嗨@AndréKool,我已經試過了,但還不夠。我用新版本的查詢更新了我的答案。 – Zeb