2016-11-27 2 views
1

다음과 같은 Firebase 노드 구조가 있습니다.타임 스탬프 별 파이어베이스 데이터 정렬

categories 
    category1 
     timestamps 
      23c491sdfwrasddgasd: true 
      asdf8234dfjalskdask: true 
      39fsdizxcasfgbskdf7: true 
      2asqwizxov340bs9fms: true 
    category2 
     timestamps 
      p23491sdfwrasddgasd: true 
      asdfpovaskdrfskdask: true 
    category3 
     timestamps 
      vmk339ffk3rasddgasd: true 
      asdf8234dfjalskdvml: true 
      bnwdwizxcasfgbskdf7: true 

소인 키 push() 의해 생성되는 키이다. 나는 가장 오래된 타임 스탬프 키로 카테고리를 정렬해야합니다. 타임 스탬프 노드의 가장 오래된 타임 스탬프 만 계산됩니다.

기본적으로 범주를 처음 수정 한 시간으로 정렬해야합니다.

노드를 다시 디자인하는 데 도움이되는 도움말을 환영합니다.

답변

1

데이터베이스 평탄화에 대해 생각해 보셨습니까?

카테고리

category1 
    oldest_timestamp: 2asqwizxov340bs9fms 
    timestamps 
     23c491sdfwrasddgasd: true 
     asdf8234dfjalskdask: true 
     39fsdizxcasfgbskdf7: true 
     2asqwizxov340bs9fms: true 
    category2 
    oldest_timestamp: asdfpovaskdrfskdask 
    timestamps 
     p23491sdfwrasddgasd: true 
     asdfpovaskdrfskdask: true 
    category3 
    oldest_timestamp: bnwdwizxcasfgbskdf7 
    timestamps 
     vmk339ffk3rasddgasd: true 
     asdf8234dfjalskdvml: true 
     bnwdwizxcasfgbskdf7: true 

기본적으로 당신이 "oldest_timestamp"라는 노드를 추가 한

: 당신의 데이터베이스 디자인을 . 이제 검색어로 카테고리를 쉽게 주문할 수 있습니다.

Query myquery = FirebaseDatabase.getInstance().getReference().child("categories").orderByChild("oldest_timestamp"); 

더 나은 성능을 위해 Firebase 데이터베이스 규칙에서 인덱싱하는 것을 잊지 마십시오.

+0

현재 범주를 수정할 때마다 값을 적용합니다. 카테고리가 이미 수정되었는지 어떻게 알 수 있습니까? 값 리스너를 사용하여 먼저 카테고리를 확인해야합니까? –

+0

예, ValueEventListener를 사용하고 timestamp 위치에서 dataSnapshot.exists()를 사용할 수 있습니다. 그러나 앱의 전체 컨텍스트를 모르기 때문에 말할 수 없습니다. – Hhorn