반응형
어레이의 필드 값으로 쿼리할 Firestore
개체 배열 내에 값이 포함된 문서를 검색하는 단순 쿼리를 실행하려고 합니다.
예를 들어 데이터베이스 구조를 확인합니다.
다음과 같은 쿼리를 실행합니다.
db.collection('identites').where("partyMembers", "array-contains", {name: "John Travolta"})
올바른 방법은 무엇입니까? Firestore를 통해서도 가능합니까?
감사해요.
Frank가 답변에서 설명한 바와 같이 어레이에 저장된 객체의 특정 속성을 쿼리하는 것은 어레이에 포함되어 있지 않습니다.
단, 가능한 회피책이 있습니다.실제로 다음과 같이 오브젝트 전체를 쿼리할 수 있습니다.
db.collection('identites')
.where(
"partyMembers",
"array-contains",
{id: "7LNK....", name: "John Travolta"}
)
이 접근방식이 고객의 요구에 적합할 수도 있고 그렇지 않을 수도 있습니다.
그array-contains
작업은 어레이에 특정(완전) 값이 포함되어 있는지 여부를 확인합니다.오브젝트 배열에 특정 속성 값을 가진 항목이 포함되어 있는지 여부를 확인할 수 없습니다.
질의할 유일한 방법은 존재 여부만 조회할 값으로 문서에 필드를 추가하는 것입니다.예를 들어 다음과 같습니다.partyMemberNames: ["John Travolta", "Olivia Newton"]
.
이름을 추출하는 경우: 문서의 "partyMembers" 배열에서 "John Travolta"를 추출합니다.문서 내의 모든 어레이를 루프하여 이 이름을 찾을 수 있는 유사한 방법을 사용할 수 있습니다.
const [names, setNames] = React.useState([])
const readAllNames = async() => {
const snapshot = await firebase.firestore().collection('identites').doc(documentID).get()
const filterData = snapshot.data().question.map(val => val.name === "John Travolta" ? val : null)
setNames( filterData.filter(e=>e) );
}
언급URL : https://stackoverflow.com/questions/54081799/firestore-to-query-by-an-arrays-field-value
반응형
'programing' 카테고리의 다른 글
Ruby on Rails - 여러 모델용 JSON 렌더링 (0) | 2023.02.25 |
---|---|
MongoDB 정규화, 외부 키 및 가입 (0) | 2023.02.25 |
순수 css를 사용하는 다른 요소의 너비를 기준으로 스팬의 너비를 설정합니다. (0) | 2023.02.25 |
AngularJS: 모델에 대한 2방향 바인딩을 선택하지 않음 (0) | 2023.02.25 |
gson을 사용하여 중첩된 JSON 구문 분석 (0) | 2023.02.25 |