2015-07-08 3 views
12

Использование firebaseArray, можно ли заказать указанный дочерний ключ: (https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries)?firebaseArray по убыванию?

var fireRef = new Firebase(https://dinosaur-facts.firebaseio.com/dinosaurs); 
var query = fireRef.orderByChild("echo").limitToFirst(25); 
var todos = $firebaseArray(query); 

Однако по умолчанию Firebase извлекает ключи в порядке возрастания.

Дети с числовым добавлением, сортируются по возрастанию.

Есть ли способ, чтобы получить результаты в порядке убывания непосредственно от firebaseArray? Например, у них есть что-то вроде .reverse() или .orderBy (desc, ...)?

+0

возможно дубликат [Показать сообщения в нисходящем порядке, публикуемую] (http://stackoverflow.com/questions/25611356/display-posts-in-descending-posted-order) –

+0

я видел это, но это сложное решение. У них есть что-нибудь .reverse() или .orderBy (desc, ...)? –

+4

* Отказ от ответственности: Я работаю для Firebase * Nope. Мы знаем, что такое добавление было бы полезно, но в настоящее время оно не существует. В некоторых случаях вы можете инвертировать свои значения, чтобы получить тот же результат (т. Е. '-1 * timestamp'). Но это зависит от типа ценности, которое вы храните. –

ответ

1

Вот как вы можете заказать по дате. Просто используйте queryOrderedByChild (dateKey) , и он будет в порядке Asc, чтобы сделать убывание вы можете сделать array.reverse()

POST_REF.queryOrderedByChild(PostKeys.kPostDate).observeEventType(.Value, withBlock: { 
    snapshot in 

    var localPosts = [Post]() 
    for item in snapshot.children { 
     let postItem = Post(snapshot: item as! FDataSnapshot) 
     localPosts.append(postItem) 
    } 
    //Display at desc order 
    let reverseResults = localPosts.reverse() as [Post] 
     completion(postsArray: reverseResults) 
    }, withCancelBlock: { error in 
    completion(postsArray: nil) 
}) 
13

Это не непосредственно ответа на исходный вопрос, но для тех, кто с помощью FirebaseUI Java/Android, с RecyclerView, можно заказать вид ресайклер в обратном направлении, а не с помощью запроса на firebase:

Пример:

LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
layoutManager.setReverseLayout(true); 
layoutManager.setStackFromEnd(true); 
recyclerView.setLayoutManager(layoutManager) 

(обеспечение установить как перед добавлением менеджера компоновки для переработчика вид)

Github вопрос: https://github.com/firebase/FirebaseUI-Android/issues/90#issuecomment-230643303

+1

Это именно то, что я хотел! Огромное спасибо! – Alexey

+1

Спасибо большое, это то, что мне нужно – rkmax

+1

Большое спасибо Алан, именно то, что я искал. Является ли этот более эффективный код по сравнению с попыткой фактически переупорядочить базу данных firebase? – tccpg288

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