Firestore에서 배열은 문서 내에 중첩될 수 있습니다. 그러나 Firestore의 배열 필드는 다른 프로그래밍 언어의 배열과 다르게 동작한다는 점을 이해하는 것이 중요합니다.
문제 설명:
Firestore 문서의 배열 필드 내의 특정 요소 업데이트 어려울 수 있습니다. items[0].meta.description과 같은 배열 내의 중첩 필드를 직접 업데이트하려고 시도하면 예상치 못한 결과가 발생할 수 있습니다.
초기 접근 방식:
처음에는 다음을 시도했습니다. 다음 코드를 사용하여 중첩된 필드를 업데이트합니다.
const key = `items.${this.state.index}.meta.description`; const property = `hello bar`; this.design.update({ [key]: property })
그러나 이 접근 방식은 개체를 지정된 인덱스에 저장합니다.
대체 접근 방식:
다음 시도에서 전체 메타 개체를 다시 작성했습니다.
const key = `items.${this.state.index}.meta`; const property = e.target.value; let meta = this.state.meta; meta[e.target.id] = property; this.design.update({ [key]: meta })
이 접근 방식은 성공적으로 업데이트되었습니다. 중첩된 필드를 사용하여 배열을 다음으로 변환했습니다. object.
해결책:
Firestore는 배열 내의 특정 항목을 업데이트하는 직접적인 방법을 제공하지 않습니다. 대신 문서에서 전체 배열을 읽고 메모리에서 수정한 다음 전체 배열 필드를 업데이트해야 합니다.
이 작업은 다음 단계를 사용하여 수행할 수 있습니다.
다음은 예제 코드입니다.
const docRef = firestore.doc(`document/${id}`); let items; // Read the document and retrieve the items array await docRef.get().then((doc) => { if (doc.exists) { items = doc.data().items; } }); // Update the specific element in the array const updatedItem = items.find((item) => item.name === 'Bar'); updatedItem.meta.description = 'hello bar'; // Update the entire array field with the modified array await docRef.update({ items });
위 내용은 Firestore의 중첩 배열 필드에서 단일 항목을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!