2017-11-01 7 views
0

Firestore는 whereNotEqual과 같은 것을 지원합니까?Cloud Firestore 여기서 NoEqual

예를 들어, 키 "xyz"가없는 정확한 문서를 가져와야합니다. Firebase 실시간 데이터베이스에서 *.equalTo(null)을 호출하여 얻을 수 있습니다.

감사합니다.

+0

내 질문에 "xyz"필드가없는 모든 문서를 가져 오기 위해 컬렉션을 쿼리하는 것이 좋습니다. 문서와 실험을 읽은 필자는 Firestore API가이를 지원하지 않는다고 생각합니다. –

답변

0

Firestore는 !=의 직접 해당 기능을 지원하지 않습니다. 지원되는 쿼리 연산자는 <, <=, ==, >, or >=이므로 "whereNotEqual"이 없습니다.

필드가 존재하는지 테스트 할 수 있습니다. 왜냐하면 모든 필터와 순서는 필드가 존재하는지 여부에 대한 암시 적으로 필터를 만들기 때문입니다. 예를 들어, 안드로이드 SDK에 :

collection.orderBy("name") 

"name" 필드를 포함하는 행만을 반환합니다.

명백한 비교와 마찬가지로 값이 존재하지 않는 행을 반환하도록이 쿼리를 반전 할 방법이 없습니다.

몇 가지 해결 방법이 있습니다. 가장 직접적인 대체는 null을 명시 적으로 저장 한 다음 collection.whereEqualTo("name", null)을 쿼리하는 것입니다. 이것은 다소 성가시다. 그러나 처음부터 채우지 않으면 기존 데이터를 다시 채워야하기 때문에 성가신 일입니다. 모든 클라이언트를 업그레이드 할 수없는 경우이 필드를 채우려면 함수를 배포해야합니다.

또 다른 가능성은 보통 누락 된 필드는 문서가 일부 상태 시스템을 통과하거나 두 개의 겹치지 않는 유형의 합집합 인 경우에만 부분적으로 만 조립되었음을 나타냅니다. 명시 적으로 상태 또는 유형을 판별 자로 기록하면 필드가 아닌 존재하지 않는 것을 쿼리 할 수 ​​있습니다. 이것은 두 가지 상태/유형 만있을 때 정말 잘 작동하지만 여러 상태가있는 경우 지저분 해집니다.

관련 문제