2015-08-17 4 views
0

У меня есть массив песен на сервере Firebase. Каждая песня имеет lastCommentAt свойство, которое является меткой времени.Порядка массива Firebase по дате (timestamp) - Firebase

Я хочу получить заказ песни ближайшим lastCommentAt времени до текущего времени.

Это мои правила Firebase:

{ 
    "rules": { 
     ".read": true, 
     ".write": "auth != null", 
     "songs": { 
      ".indexOn": ["lastCommentAt"] 
     } 
    } 
} 

Songs feed example - CodePen

Я не могу использовать orderByChild(). Это делает странные проблемы:

  • Uncorrect заказ

  • loadMore() загружает те же 2 песни в цикле. Это означает неограниченный список песен .

Songs feed with orderByChild() example - CodePen

ответ

0

Я подозреваю, что основной причиной вашей проблемы является отсутствие понимания эффекта startAt() при использовании в сочетании с orderByChild(). Для получения дополнительной информации читайте Firebase documentation on queries.

При использовании orderByChild("lastCommentAt") то функция startAt() применяется не на идентификатор экземпляра, но к lastCommentAt свойству каждого экземпляра.

Поэтому, как только вы добавили orderByChild("lastCommentAt") то startAt() потребности иметь первый параметр в качестве первого lastCommentAt значения, которое вы хотите получить, а второй параметром является последним lastCommentAt значения, которое вы хотите получить.

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