2016-03-04 57 views
0

我目前使用Firebase作爲數據庫,並試圖使用orderbypriority對我的Firebase條目進行排序。但是我有一個orderbypriority的問題。當我在firebase引用上使用orderbypriority查詢我的數據庫時,它不會按照每個元素的優先級順序返回數據。這裏是我的代碼,我使用:Firebase orderby優先級不工作

Firebase answersRef = new Firebase("/Questions/ModeratorQuestions/General/" + question.getKey() + "/Answers"); 
answersRef.orderByPriority().addListenerForSingleValueEvent(new ValueEventListener(
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
     System.out.println(dataSnapshot); 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
}); 

這裏是我的數據庫是如何內火力

-Questions 
    -ModeratorQuestions 
     -General 
      -QuestionIdNumber 
       -Answers 
        -Answer 1 (With priority of 0) 
        -Answer 2 (With priority of 1) 
        -Answer 3 (With priority of 2) 

快照設置可以發現here

這裏是我從dataSnapshot得到的輸出,當我嘗試查詢我的代碼中上面指定的url時(我從url中取出項目名稱)。

{ key = Answers, value = {Douglas_Comer={.priority=0.0, .value=0}, Sophie_Dee={.priority=1.0, .value=0}} } 
{ key = Answers, value = {Yes={.priority=0.0, .value=0}, No={.priority=1.0, .value=0}} } 
{ key = Answers, value = {Go_on_a_shopping_spree_at_the_mall={.priority=1.0, .value=0}, Donate_it_to_charity={.priority=3.0, .value=0}, Stocks={.priority=4.0, .value=0}, Go_to_Walmart_I'll_figure_out_the_rest_when_I_get_there={.priority=2.0, .value=0}, DANCE={.priority=0.0, .value=0}} } 
{ key = Answers, value = {Yes={.priority=0.0, .value=0}, Love_is_Dead={.priority=2.0, .value=0}, No={.priority=1.0, .value=0}} } 
{ key = Answers, value = {three_landmines={.priority=1.0, .value=0}, 1,000_non-venomous_snakes={.priority=0.0, .value=0}} } 
{ key = Answers, value = {have_free,_coach-seating,_air_travel_once_a_month={.priority=1.0, .value=0}, own_a_yacht={.priority=0.0, .value=0}} } 
{ key = Answers, value = {Valentine's={.priority=3.0, .value=0}, Thanksgiving={.priority=2.0, .value=0}, Other={.priority=4.0, .value=0}, Halloween={.priority=1.0, .value=0}, Christmas={.priority=0.0, .value=0}} } 
{ key = Answers, value = {Bread={.priority=0.0, .value=0}, Tortillas={.priority=3.0, .value=0}, Pasta={.priority=2.0, .value=0}, Rice={.priority=1.0, .value=0}} } 
{ key = Answers, value = {fight_your_crush={.priority=0.0, .value=0}, fight_a_bear_cub={.priority=1.0, .value=0}} } 
{ key = Answers, value = {Happy_relationship={.priority=0.0, .value=0}, Eligible_Bachelor={.priority=1.0, .value=0}, NULL_POINTER_EXCEPTION={.priority=2.0, .value=0}, Focused_on_beautiful_Science={.priority=4.0, .value=0}, I_have_no_idea_what_I'm_doing={.priority=3.0, .value=0}} } 
{ key = Answers, value = {Apples={.priority=0.0, .value=0}, Bananas={.priority=1.0, .value=0}, Oranges={.priority=2.0, .value=0}} } 

正如你所看到的,他們中的大多數不是按他們的優先順序排列的。我不明白爲什麼。如果有人可以幫我解決我做錯的事情,那將是值得讚賞的。如果您需要更多信息,我也可以回答問題。

+0

你可以複製/粘貼您的Firebase數據結構簡要快照到問題中? – Jay

+0

@Jay No我需要至少10個聲望才能發佈圖片,我沒有,但是可以在http://imgur.com/y5ydfoz找到圖片 – Michael41000

+0

您不應該發佈圖片,而是發佈實際文字。您可以通過按導出按鈕輕鬆地從Firebase儀表板獲取該信息。 –

回答

0

地圖中的項目沒有定義的順序。但項目是從火力地堡,正確的順序,你可以驗證,如果你遍歷他們檢索:

public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot child: dataSnapshot.getChildren()) { 
     System.out.println(child.getValue()); 
    } 
} 

見同樣的問題,但後來的iOS:Issue displaying array of image from url