문제 설명:
다음을 포함하는 배열 필드가 있는 문서가 Firestore에 있습니다. 사물. 배열 내부 개체 내의 특정 필드를 업데이트해야 합니다. 그러나 점 표기법(items.${index}.meta.description)을 사용하여 직접 업데이트하려고 하면 올바르게 작동하지 않습니다.
Firestore는 현재 직접 업데이트를 지원하지 않습니다. 인덱스 배열의 특정 요소. 대신 다음 대안을 고려하십시오.
옵션 1: 전체 배열 다시 작성
특정 필드를 업데이트하는 대신 문서에서 전체 배열을 읽고 원하는 대로 메모리에서 수정한 다음 수정된 배열 필드를 전체적으로 업데이트합니다.
const key = `items.${this.state.index}.meta`; let items = this.state.items; items[this.state.index].meta.description = 'hello bar'; this.design.update({ [key]: items, })
이 접근 방식은 전체 배열을 효과적으로 다시 작성하므로 배열이 큰 경우 비효율적일 수 있습니다.
옵션 2: 배열 작업 사용
Firestore는 기존 배열 요소에 대한 직접적인 업데이트를 허용하지 않지만 배열 작업을 사용하여 요소를 추가하거나 제거할 수 있습니다. 예를 들어 배열에 새 요소를 추가하려면:
this.design.update({ items: FieldValue.arrayUnion({ name: 'New Item', meta: { image: 'def.png', description: 'hello new item', } }) })
요소를 제거하려면 FieldValue.arrayRemove()를 사용합니다.
권장 사항:
배열이 비교적 작은 경우 옵션 1(전체 배열 다시 쓰기)이 간단한 솔루션이 될 수 있습니다. 그러나 배열이 큰 경우 옵션 2(배열 작업 사용)가 전체 배열을 덮어쓰는 것을 방지하므로 더 효율적입니다.
위 내용은 Firestore 배열의 중첩 필드를 어떻게 업데이트할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!