2017-06-02 11 views
0

enter image description hereenter image description here火力地堡DB查詢在我保存的keywordlist

在我的Android應用程序,我存儲此結構的產品清單。但我需要檢查關鍵字是否包含我搜索到的文字。我使用這個查詢

Query query= FirebaseDatabase.getInstance().getReference(productList) 
    .orderByChild("keywords").startAt("bag").endAt("bag\uf8ff"); 

但它不能正常工作,請幫我在這part.Otherwise說正確的結構保存關鍵字在我的應用程序FirebaseDB。

+0

Firebase無法有效查詢集合/數組中是否存在子級。看到我的答案在這裏:http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value。如果您在解決問題時遇到問題,請分享[重現您卡住的最小代碼](http://stackoverflow.com/help/mcve)。這將包含您實際JSON的片段,您可以通過點擊[Firebase數據庫控制檯](https://console.firebase.google.com/project/_/database/data)中的「導出JSON」 。 –

+0

嗨,弗蘭克,我加了我的JSON snipp也是。請幫助我 – MariP

+0

謝謝弗蘭克,在你的指導和毒害我的幫助下,它的工作。我實現了我所期待的......非常感謝。 – MariP

回答

1

Firebase實時數據庫無法像「包含」一樣正常工作,就像您想要的那樣進行匹配。相反,更好的建議方法是將每個「產品」列出一個關鍵字列表,而不是將它存儲在逗號分隔的字符串中。

"productList": 
{ 
    "id1": 
    { 
     "keywords": 
     { 
      "bag": true, 
      "bang": true 
     }, 
     ... 
    } 
} 

這種結構在Firebase Realtime Database Structure Guidelines中進一步解釋。它使查詢變得更好。然後,您可以執行以下操作以查找包含該關鍵字的產品...

Query query = FirebaseDatabase.getInstance().getReference(productList).orderByChild("keywords/bag").startAt(""); 
+0

對不起,它不起作用 – MariP

+0

@MariP嗯,你能說什麼不工作? – poisondminds

+0

我試着用這個DB結構,在HashMap(String,Boolean)中存儲關鍵字。但是這個查詢只返回null。 – MariP