2017-12-29 40 views
2

초보자를 화나게하고 다른 필드 제한에서 범위 필터를 극복하는 방법에 어려움을 겪고 있습니다."다른 필드의 범위 필터"제한 사항에 대한 대안?

사용 사례는 일정 관리 솔루션에 대한 이벤트/이벤트 데이터의 저장 및 검색입니다.

캘린더보기는 다른 주, 월 등이 될 수 있습니다. 즉, 특정보기마다 정의 된 시작 및 종료 시간 소인이 있습니다.

저장 이벤트는 시작 시간 소인과 종료 시간 소인을 갖습니다.

시작 및 종료 타임 스탬프 내에서 끝나거나 끝나는 모든 이벤트를 쿼리해야합니다.

SQL 백엔드로 이것을 구현하는 것은 간단하지만 firestore를 사용하면 다른 필드의 범위 필터가 불가능 해 보입니다. 어떻게 해결 될 수 있으리라 생각하십니까? 아니면 파이어 스토어에서 이런 종류의 기능을 지원할 계획이 있습니까?

BR 스테판 내가 먼저 이러한 제한이 존재하는 이유를 먼저 이해하는 데 도움이 문제가 발생

답변

0

. 예, 이것은 SQL 데이터베이스에서 사소한 일일 수 있지만 Firestore에서와 같이 SQL 데이터베이스는 확장되지 않습니다. Firestore는 Google Big Table에 의해 뒷받침 될 가능성이 있으며, because of the way that indexing works은 범위 필터가 다른 속성에서 사용될 때 확장되지 않습니다. 본질적으로, Firestore는 앱이 비례 할 때 당신을 놀라게 할 무언가를하도록 내버려 두지 않습니다.

내가보기에 가장 좋은 옵션은 두 개의 쿼리를 수행 한 다음 그 결과를 한 세트로 결합하는 것입니다. sudo 코드는 다음과 같습니다.

let eventsStartingIn2017 = calendar_events.where("start_date", ">=", "1/1/2017").where("start_date", "<=", "31/12/2017") 
let eventsEndingIn2017 = calendar_events.where("end_date", ">=", "1/1/2017").where("end_date", "<=", "31/12/2017") 

let 2017Events = new Set(); 
2017Events.add(eventsStartingIn2017); 
2017Events.add(eventsEndingIn2017);