Firestore 배열 필드의 단일 항목 업데이트
Firestore Firestore 문서에서는 요소 추가 또는 제거를 포함하여 배열 필드와 상호작용하는 방법을 설명합니다. 그러나 배열 내부의 항목을 직접 업데이트하는 방법이 부족합니다.
다음과 같은 문서의 경우:
{ name: 'Foo', items: [ { name: 'Bar', meta: { image: 'xyz.png', description: 'hello world' } }, { name: 'Rawr', meta: { image: 'abc.png', description: 'hello tom' } } ] }
items[0].meta.description과 같은 중첩 속성을 수정하려면, 다음 접근 방식은 작동하지 않습니다.
const key = `items.${this.state.index}.meta.description`; const property = `hello bar`; this.design.update({ [key]: property }).then(() => { console.log("done") }).catch(function(error) { message.error(error.message); });
대상 배열 인덱스의 모든 속성을 제거하고 설명만 유지합니다.
전체 개체를 다시 작성하는 것도 바람직하지 않습니다.
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 }).then(() => { this.setState({ [key]: meta }) }).catch(function(error) { message.error(error.message); });
전체 항목 배열을 개체로 변환합니다.
대신 문서화하고, 메모리를 변경하고, 수정된 전체 배열 필드를 업데이트합니다.
const docRef = firestore.collection('collection').doc('document'); docRef.get().then(doc => { const items = doc.data().items; items[0].meta.description = "hello bar"; docRef.update({ items: items }); });
이렇게 하면 의도한 속성만 배열에서 업데이트됩니다. 요소.
위 내용은 Firestore 배열 필드의 단일 항목을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!