2017-02-09 82 views
0

我正在構建訂購工具。每個訂單都有一個id,這是我使用push方法從Firebase獲得的唯一標識符。我的問題是:假設我在頁面上放置了一個標有「訂單」的文本字段,旁邊有一個標題爲「查找」的按鈕。Firebase數據庫:搜索特定項目

什麼是檢索(甚至可能是結構)數據的最佳方法?我熟悉Firebase數據庫的索引。基本上,我想啓用搜索特定的順序。可能有成千上萬個。下面是否正確?

var wantedOrder = firebase.database().ref('orders').equalTo("My Input Text");

"orders": { 
    "abc123456": { 
     "name": "My First Fake Order", 
     "members": { 
     "alovelace": true, 
     "ghopper": true, 
     "eclarke": true 
     }, 
    "abc123457": { 
     "name": "My Second Fake Order", 
     "members": { 
     "alovelace": true, 
     "ghopper": true, 
     "eclarke": true 
     } 
    }, 
    ... 
    } 

火力地堡規則

{ 
    "rules": { 
    "orders": { 
     ".indexOn": ["name"] 
    } 
    } 
} 
+2

你不能直接使用equalto ....你需要申請和orderBy *()方法之前 – Kushan

回答

2

你之前equalTo()startAt()endAt()需要一個排序依據*()類型的函數。

你的具體情況,我會用

var wantedOrder = firebase.database().ref('orders').orderByChild('name').equalTo('yourText').on(listener you want.....) 

這將返回搜索的精確匹配....

如果你想有一個更靈活的方式,使用startAt()endAt()

+0

對不起在手機上......無法幫助縮進 – Kushan

+0

我不知道如果我需要在firebase規則中添加一個'$ order' ...如果它不起作用,我會迴圈。 TY –

+0

您的規則沒問題...您調用的方法錯了...在Firebase文檔中查看更多高級查詢它可以幫助您。 – Kushan

0

我可以建議你們兩個方式來實現你在找什麼。

  1. (不是很有效的,如果你有大量的數據),您可以通過ValueEventListener在每一套搜索關鍵字數據的獲得「訂單」節點,然後循環的全部數據。

  2. 看看這個鏈接,他們有類似於你的數據集。 Querying firebase through substring