Firestore null이 아닌 곳을 선택합니다.
프로젝트를 관리하기 위해 Firebase를 사용하고 있으며 일부 값이 null이 아닌 where 절을 사용하여 쿼리를 만들 수 없습니다.
예:저는 직원들의 컬렉션을 가지고 있습니다.키는 장비 ID이고 값은 색상인 개체로 장비 목록이 있습니다.
user = {
firstName: 'blabla',
lastName: 'bloblo',
equipments: {
123: 'blue',
124: 'red'
}
}
저는 특정 장비를 보유한 직원들을 모두 장비에 넣고 싶습니다.123이라고 하죠.
equipments.123이 null이 아닌 Employees에서 Select *로 전송됩니다.시도해 봤습니다.
firestore.collection('employees').where(`equipments.${equipmentId}`, '!=', null)
하지만 작동하지 않습니다.
저는 그것을 할 수 없을 것 같습니다.저 좀 도와주시겠어요?
2020년 9월 업데이트: v7.21.0에 동일하지 않음(!=
) 쿼리!즉, 다음 코드를 사용할 수 있습니다.
firestore.collection('employees').where(`equipments.${equipmentId}`, '!=', null)
이전 답변:
Firestore에 "같지 않은" 연산자가 없습니다.하지만 논리를 보면, 당신이 하려는 것은 다음과 같은 값을 쿼리하는 것입니다.String
그리고 아닌null
Firestore에서 String을 전달하면 이 작업을 수행할 수 있습니다.where()
기능.
따라서 다음보다 낮은 값을 쿼리할 수 있습니다.\uf8ff
유니코드 범위에서 매우 높은 코드 포인트입니다.유니코드에서 대부분의 일반 문자 뒤에 있기 때문에 이 쿼리는 유형의 모든 것을 반환합니다.String
:
firestore.collection('employees').where(`equipments.${equipmentId}`, '<', '\uf8ff')
또는 ""보다 높은 값을 간단히 쿼리할 수 있습니다(비어 있음).String
):
firestore.collection('employees').where(`equipments.${equipmentId}`, '>', '')
FWIW Firestore 인덱스가 희박하기 때문에 다음과 같은 작업을 수행할 수 있습니다.
firestore.collection('employees').orderBy(`equipments.${equipmentId}`)
또한 해당 필드가 설정된 문서만 얻을 수 있습니다.필드를 명시적으로 설정하는 경우null
그러나 데이터베이스에서는 null 값이 먼저 표시되므로 명시적 null 값을 피하려면 다음 작업을 수행할 수 있습니다.
firestore.collection('employees').orderBy('equipments.${equipmentId}').startAfter(null);
: 필드가 문서에 없는 경우 Cloud Firestore는 해당 문서/필드에 대한 인덱스 항목을 만들지 않습니다.
언급URL : https://stackoverflow.com/questions/48479532/firestore-select-where-is-not-null
'programing' 카테고리의 다른 글
R에서 "작업영역 이미지 저장?" 프롬프트를 비활성화하는 방법은 무엇입니까? (0) | 2023.07.11 |
---|---|
부트스트랩 모달 닫기 (0) | 2023.07.11 |
스프링 부트에 사용자 지정 변환기를 등록하는 방법은 무엇입니까? (0) | 2023.07.06 |
git 모든 변경 사항을 취소하고 업스트림에서 끌어옵니다. (0) | 2023.07.06 |
C에서 문자열을 2개의 문자열로 분할하는 방법 (0) | 2023.07.06 |