2016-06-16 3 views
2

내가 중포 기지에서 다음과 같은 구조가있는 경우 :쿼리 값 중포 기지

{ 
    "images": { 
    "first_image": { 
     "url": "https://ima.ge/first_image", 
     "uploader": "john", 
     "start": "1465920841", 
     "end": "1466920841" 
    }, 
    "second_image": { 
     "url": "https://ima.ge/second_image", 
     "uploader": "louis", 
     "start": "1465920987", 
     "end": "1476920987" 
    }, 
    "third_image": { 
     "url": "https://ima.ge/third_image", 
     "uploader": "peter", 
     "start": "1465920990", 
     "end": "1484920990" 
    } 
    } 
} 

는 예를 들어 현재의 타임 스탬프가 "시작"과 사이에 모든 이미지를 조회 할 수 있는가 "를 끝" ? 따라서 현재 타임 스탬프 (유닉스 신기원 이후로 밀리 초)가 1475920987이면 타임 스탬프가 시작 및 끝 범위에 없으므로 second_imagethird_image을 반환하지만 first_image은 반환하지 않습니다.

다른 stackoverflow 질문에 사용자가 여러 쿼리를 사용할 수 없다고 지적했기 때문에 가능하지 않습니다. 따라서 사용자가 다른 사람이 투표 할 수있는 시점을 결정할 수있는 투표 시스템을 만들고 싶다면 사용자에게 투표 가능한 이미지 만 표시 할 수 있습니까? 여러 개의 쿼리가 허용되지 않더라도?

iOS 및 Android Firebase SDK를 사용하고 있지만 언어 별 답변이 필요하지 않습니다.

+0

,하지만 지금은 그것을 찾을 수 없습니다 :

그래서 당신은 뭔가를해야합니다. 나는 거기서 해결책을 찾은 것 같지 않습니다. 문제는 Firebase 쿼리가 단일 속성으로 만 필터링 할 수 있기 때문에 찾고자하는 필터링을 허용하는 방식으로 두 값을 단일 속성으로 결합하는 방법을 찾아야한다는 것입니다. 말한대로 : 나는 그 당시의 것을 생각할 수 없었지만 이번에는 다른 누군가가 해결책을 찾았을 것입니다. –

+0

최적이 아니지만 중첩 쿼리를 사용하여 필터링 할 수 있습니다. 예를 들어 all by end를 검색 한 다음 두 번째 쿼리로 필터링합니다. –

답변

0

queryStarting(atValue:)queryEnding(atValue:)을 하나의 쿼리로 모두 사용할 수 있습니다. 비슷한 질문이 몇 달 전에 있었다

let query = Database.database().reference().child("images") 
    .queryStarting(atValue:<startTimestamp>) 
    .queryEnding(atValue:<endTimestamp>)