2016-03-03 54 views
1

在我的反應應用程序中,我從Firebase中獲取項目列表以顯示在列表視圖中。反應Firebase - 按用戶uid值過濾Firebase獲取的項目

this.fb = new Firebase(rootUrl + 'items/'); 
    this.bindAsObject(this.fb, 'items'); 
    this.fb.on('value', this.handleDataLoaded); 

每個項目的值都是發佈它的用戶的uid值。我使用authData.uid在應用程序中獲取登錄的用戶uid。

我該如何去過濾列表以顯示該用戶的項目?

回答

1

您是否嘗試過使用snapshot來過濾列表?這是方式更有效......

下面介紹如何使用一個:

var ref = new Firebase("https://YOUR-URL.firebaseio.com/"); 
    ref.orderByChild("location").equalTo("United States").on("child_added", function(snapshot) { 
     document.write(snapshot.key()); 
    console.log(snapshot.key()); 
    }); 

你問:「我怎麼能去過濾列表由用戶只顯示項目」

以上只是一個例子。在你的情況,更換locationproject,或任何參數的類型是否存儲在數據庫中(在https://YOUR-URL.firebaseio.com/)和United States用任何參數的值已存儲了用戶名,ID,或更換用戶在代碼中被識別。

基本火力地堡查詢開始與我們的排序依據功能之一: orderByChild()orderByKey(),或orderByPriority()。然後您可以將這些與其他五種方法結合起來進行復雜查詢: limitToFirst(),limitToLast(),startAt(),endAt()equalTo()。找出使用哪個函數。

在這裏看到有關如何使用快照更多詳細信息:firebase.com/blog/2014-11-04-firebase-realtime-queries.html

+1

非常感謝你。我如何才能真正得到過濾結果到bindAsObject作爲上面的函數呢?我現在的函數將所有項目都放入數組中。 – ChrisM

+0

您的歡迎。使用'equalTo()',正如我所說的搜索數據庫中的用戶,獲取項目。你明白嗎?如果我的答案能夠解決/幫助您,請您將我的答案標記爲已接受並投票表決。請在評論框中告訴我其他任何問題,如有必要,我會更新我的答案。謝謝,克里斯! – Eddev

+1

沒問題。我想要做的是讓用戶將多個項目放入this.bindAsObject(this.fb,'items');像上面一樣。我希望即時解釋清楚。 – ChrisM