2017-02-04 2 views
0

enter image description hereКак запрашивать и получать данные в порядке 2-слойного ребенком

Потому что я хочу, чтобы создать лидер в моем андроид приложения, я начал изучать firebase недавно и создал базу данных, как показан на рисунке. Здесь у меня несколько зарегистрированных пользователей; под «пользовательским» узлом являются userUID каждого пользователя, а под узлом userUID - данные каждого пользователя. Я планировал создать таблицу лидеров, запросив все объекты под узлом «users» и отсортировав их по «общим IMP», но проблема в том, что «totalIMP» не является прямым дочерним элементом узла «users», и таким образом, я не могу использовать такой код, как:

Query query = databaseReference.child("users").orderByChild("totalIMPs"); 

для этого. Есть ли альтернативный способ, которым я могу это сделать «без изменения» структуры моей базы данных? Спасибо.

+1

На самом деле, этот запрос является именно то, что вам нужно. Ты это пробовал? Разве это не работает? –

ответ

-3

Первый: Firebase - когда вы добавляете информатику, firebase добавляет, как беспорядок.

Если вы хотите заказать вашу базу данных в запросе, в тот момент, когда вы получаете информацию от firebase,

вам нужно исследовать в Диапазон запросов и Лимит запросов, я предпочитаю пример в старая консоль firebase, в этой части вы можете найти очень простой пример, и сосредоточиться на результате ...

Ссылка на тему Диапазон запросов и Limit Запросы: https://www.firebase.com/docs/web/guide/retrieving-data.html#section-ordered-data

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

Если вы хотите заказать данные при попытке добавить информацию, вам нужно будет знать низкое значение и максимальное значение, и то же самое .. Диапазон запросов и Limit запросы.

Мы можем заказать узлы дочерним ключом, который все они разделяют, передав этот ключ в orderByChild(). Например, используя пример нашей базы данных динозавров фактов, мы можем прочитать все динозавры упорядоченные по высоте с помощью следующего запроса:

var ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs"); 
ref.orderByChild("height").on("child_added", function(snapshot) { 
    console.log(snapshot.key() + " was " + snapshot.val().height + " meters tall"); 
}); 

Ссылка: https://www.firebase.com/docs/web/api/query/orderbychild.html

Мы можем заказать узлы величиной своих детей с помощью метод orderByValue(). Например, с помощью Дино спорт забьют данные в нашем примере базе данных динозавров фактов, мы можем показать первые три голевые динозавр с помощью следующего запроса:

var scoresRef = new Firebase("https://dinosaur-facts.firebaseio.com/scores"); 
scoresRef.orderByValue().limitToLast(3).on("value", function(snapshot) { 
    snapshot.forEach(function(data) { 
    console.log("The " + data.key() + " dinosaur's score is " + data.val()); 
    }); 
});