2014-09-20 3 views
0

반경에서 모든 것을 돌려 줄 쿼리를 사용하여 데이터를 쿼리하고 싶습니다. (geofire는 괜찮은 것을 찾을 수 있지만) datetime 창에서도 가능합니다.단일 쿼리에서 firebase의 GeoFire를 Priority와 함께 사용할 수 있습니까?

현재로서는 datetime을 우선 순위로 저장하고 있으므로 우선 순위 번호 (시작/종료 날짜 시간에 해당) 사이의 데이터를 요청하는 배열을 쿼리하는 것은 매우 쉽습니다.

내 데이터를 GeoFire 배열에 넣은 다음 쿼리하여 반경을 가져 오는 것도 매우 쉽습니다.

그 두 가지를 결합 할 수 있습니까? 너무 쉽지 않은 방법으로?

건배

+0

모든 노드에 단일. 우선 순위가 있습니다. datetime과 geohashes를 하나의 .priority로 결합하는 방법을 찾을 수 있다면 해당 조합을 쿼리 할 수 ​​있습니다. 그러나 유스 케이스에서는 두 가지를 결합 할 수는 없다고 생각됩니다. –

답변

1

단일 쿼리가 아닙니다. 클라이언트 쪽을 필터링하거나 둘 이상의 단계에서 쿼리를 수행해야합니다.

  • 각각의 노드가 단일 priority value에 한정되어 있기 때문에

    이다.

  • blog post에 따라 GeoFire은 우선 순위를 사용하여 조회 용으로 사용하는 geohash을 저장합니다.

가장 쉬운 방법은 추가 필터링 클라이언트 측을 처리하는 것입니다. 대역폭 영향으로 인해 문제가 발생하면 데이터를 분할 (예 : 그룹 이벤트를 월 단위로)하여 여러 단계로 수행하십시오.

+0

안녕하세요 제니가 대답 해 주셔서 감사합니다. startWith는 이름과 우선 순위를 인수로 사용합니다. 이것은 이들을 1 차 및 2 차 인덱스로 사용할 수 있다는 것을 의미하며, 따라서 이들 모두를 기반으로 쿼리를 수행합니까? 예를 들어 시간을 지정하여 이름을 지정하고 geohash로 우선 순위를 매기십시오. -> startWith (sometimestamp, somegeohash) 등을 사용하십시오. – STE

+1

그래, 할 수있을 것 같아. 유일한주의 사항은 우선 순위가 고유하다는 보장이 없다는 것입니다. – mimming

+0

감사합니다 :) 답변에 추가하고 싶다면 내 질문에 대한 대답으로 받아 들일 수 있습니다. – STE