2017-04-07 133 views
0

我正在開發應用程序,我需要從firebase中提取特定值。對於這種情況,我需要拉「分數」,其中「uID」等於當前用戶標識。什麼是最好的方式來做到這一點。如何從firebase中提取特定值

謝謝你的幫助。

enter image description here

+0

而不是讓** Leaders-> key-> data **使它** Leaders-> user id-> key-> data **然後你可以簡單地爲你想要的用戶獲取數據 – AlwaysConfused

+0

也許你有一些示例代碼?這將是一個很大的幫助 – MariusBrave

+0

這很簡單,只需按照firebase文檔[這裏](https://firebase.google.com/docs/database/android/read-and-write),你就會得到它的權利。確保你有一個適當的數據庫構建我之前提到的 – AlwaysConfused

回答

1

Firebase將始終返回完整的節點。所以你不能只爲用戶返回分數。但是你可以通過使用火力地堡查詢返回的共同節點,無論是得分和用戶正在(一開始-K...):

DatabaseReference leadersRef = FirebaseDatabase.getInstance().getReference("Leaders"); 
Query query = leadersRef.orderByChild("uID").equalTo("vUdnKx..."); 
query.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     for (DataSnapshot child: snapshot.getChildren()) { 
      System.out.println(child.getKey()+": "+child.child("Score").getValue(Long.class)); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     // Getting Post failed, log a message 
     Log.w(TAG, "onCancelled", databaseError.toException()); 
     // ... 
    } 
}) 

注意,代碼遍歷的結果snapshot。這是因爲查詢可能會有多個結果。所以快照包含了這些結果的列表。即使只有一個結果,快照也會包含一個結果列表。

欲瞭解更多信息,請參閱Firebase documentation on handling listssorting and filtering data

+0

謝謝......它似乎我得到期望的結果 – MariusBrave

+0

關於多個結果,每個用戶將只有一個領導「孩子」,所以它應該導致任何重大問題 – MariusBrave

0

Beeing一個JSON Database,火力地堡不提供WHERE條款。爲了實現此目的,您可以創建一個名爲Score_uID的新字段,其值爲10_vUdnKxCSRegqruSAi1Ncz5HWPO。有了這個新的功能,你可以只選擇那些具有「分數」的值,其中「uID」等於當前用戶標識。這是Firebase中的常見做法。希望能幫助到你。