2015-03-24 4 views
3

Я разработки Android приложений с помощью следующей Firebase базы данных таблицы:Firebase orderByChild и equalTo() запросы не работают

"posts": { 
"id_1": { 
    "author": "google:111527135678918251124", 
    "color": -2960686, 
    "creationTime": 1427104145195, 
    "text": "my text", 
    "title": "my Title", 
    "type": 0, 
    "visible": true 
}, 
"id_2": { 
    "author": "google:111527135678918251524", 
    "color": -2960686, 
    "creationTime": 1427104145195, 
    "text": "my text", 
    "title": "my Title", 
    "type": 2, 
    "visible": true 
}, 
"id_3": { 
    "author": "google:111527135678918251124", 
    "color": -2960686, 
    "creationTime": 1427104145195, 
    "text": "my text", 
    "title": "my Title", 
    "type": 1, 
    "visible": true 
} 
} 

Я хотел бы иметь возможность извлекать посты сортировать по child (отсортировано по типу в качестве примера) и иметь возможность извлекать все сообщения с определенным дочерним значением (тип = 1). Чтение документов Firebase кажется, что мне нужно написать следующий код, но я не получил желаемый результат.

Сортировать по типу

rootRef.child("posts").orderByChild("type") 
      .addListenerForSingleValueEvent(new ValueEventListener() { 

     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      result = (HashMap<String, Post>) dataSnapshot.getValue(); 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

я получаю: неупорядоченный Карта сообщений

Type = значение

rootRef.child("posts").orderByChild("type").equalTo(1, "type").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      result = dataSnapshot.getValue(); 
      result = result; 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }) 

я получаю: null. Моего Datasnapshot объект имеет key = "posts" и value = null

+0

Вы хотите 'equalTo (1)' с одним аргументом. – Kato

+0

Вы правы @Kato – Alessandro91

ответ

4

О упорядочении, я думаю, что проблема в том, что я извлечение данных как HashMap, который сам по себе является неупорядоченным.

Как было предложено в комментариях, для второго случая требуется .equalTo(1) вместо .equalTo("type",1), потому что ему предшествует метод .orderBy().

+0

Итак, помимо Hashmap, какой другой вариант мы можем реализовать упорядоченный список. –

Смежные вопросы