2016-09-22 81 views
0

我正在構建一個項目,我想從使用Firebase 3.0的查詢中提取列表。我對此很新,但我想我的問題有一個簡單的答案。firebase 3.0查詢

我有這樣的結構:

requests : { 
     luke1 : { 
       1 : { 
        .../... 
        users : { 
           0 : { 
            username : joseph, 
            answered : 0 
            } 
           1 : { 
            username : mark, 
            answered : 1 
            } 
           } 
        } 
       } 
      } 

基本上登錄的用戶(luke1)將請求發送到多個用戶(約瑟夫和標記),並讓說我登錄爲用戶:約瑟夫。 我想要得到哪些未被回答尚未

var ref = firebase.database().ref("requests/"); 

我想知道我可以編寫查詢發送到約瑟夫請求的列表。

感謝您花時間閱讀本文,如果您需要更多信息,請告訴我。

回答

0

要實現這種查詢,您需要在變量中存儲用戶的currentID。完成後,只需嘗試類似下一個查詢:

var ref = firebase.database().ref("request").child(currentUserId).child("users"); 

如果我沒有錯,它會返回您所需的查詢。希望它能幫助你!

0

當使用Firebase(以及大多數NoSQL數據庫)時,您通常會發現最終會根據應用程序想要使用它的方式對數據進行建模。

因此,對於您當前的數據模型,您可以很容易地獲得特定用戶發送的請求。

ref.child("requests/luke1").on("child_added", ... 

但是你還不能很容易地找到請求發送到一個特定用戶。爲了讓輕鬆查詢這些數據,你可以倒數據結構添加到您的數據庫:

received: { 
    joseph: { 
     0: { 
      from: luke1 
      answered: 0 
     } 
    } 
} 

現在你可以很容易地得瑟與懸而未決的請求:

ref.child("received/joseph").orderByChild("answered").equalTo(0).on("child_added", ... 

您最初的反應是可能的,這數據重複的情況很糟糕。但是在NoSQL數據庫中它確實很常見。

模型結構有很多種方法。對於這個話題的一個很好的介紹,我推薦這篇關於NoSQL data modeling的文章。