code

존재하지 않는 문서 키에 대해 Cloud Firestore를 쿼리하는 방법

starcafe 2023. 7. 17. 21:17
반응형

존재하지 않는 문서 키에 대해 Cloud Firestore를 쿼리하는 방법

옵션 속성을 가진 데이터 모델이 있다고 가정해 보겠습니다.예를 들어 "이름", "성" 및 선택적 "웹 사이트" 속성을 가진 사용자 개체일 수 있습니다.

Cloud Firestore에서는 알려진 웹 사이트가 있는 사용자 문서에만 "웹 사이트" 속성이 설정되며, 다른 모든 사용자 문서에는 이 속성이 없습니다.

제 질문은 "웹 사이트" 속성 없이 모든 사용자 문서를 조회하는 방법입니다.

문서는 다음과 같은 속성을 포함할 수 있습니다.null값 데이터 유형(데이터 유형 설명서 참조).그러면 쿼리를 구성하여 결과를 제한할 수 있습니다.website재산은null.

이는 누락된 속성과 동일하지 않지만 사용자 지정 개체를 사용하여 Firestore에 데이터를 쓰면 비어 있는 속성이 자동으로 저장됩니다.null전혀 그렇지 않은 것보다는수동/프로그래밍으로 다음을 작성할 수도 있습니다.null값을 입력합니다.

Android에서 다음을 사용하여 테스트했습니다.

FirebaseFirestore.getInstance().collection("test").whereEqualTo("website", null).get();

데이터베이스 구조는 다음과 같습니다.

example firestore structure

문서만 반환되었습니다.inuwlZOvZNTHuBakS6GV서류 때문에9Hf7uwORiiToOKz6zcsX의 문자열 값을 포함합니다.website소유물.

당신은 보통 스위프트에서 개발하는 것 같은데, 안타깝게도 사용자 지정 객체는 지원되지 않지만 사용할 수 있습니다.NSNull()a를 쓰는 것nullFirestore 값입니다.예를 들어, (Swift에 능숙하지 않으므로 문제가 있으면 언제든지 수정하십시오.)

// Writing data
let docData: [String: Any] = [
    "firstname": "Example",
    "lastname": "User",
    "website": NSNull()
]
db.collection("data").document("one").setData(docData) { err in
    if let err = err {
        print("Error writing document: \(err)")
    } else {
        print("Document successfully written!")
    }
}

// Querying for null values
let query = db.collection("test").whereField("website", isEqualTo: NSNull())

설명서에는 존재하지 않는 값을 쿼리하는 방법이 나와 있지 않으므로 이 방법이 차선의 방법인 것 같습니다.개선하거나 대안을 제시할 수 있는 사람이 있다면 그렇게 해주시기 바랍니다.

언급URL : https://stackoverflow.com/questions/46806860/how-to-query-cloud-firestore-for-non-existing-keys-of-documents

반응형