>  기사  >  웹 프론트엔드  >  Firestore 배열 필드의 단일 항목을 업데이트하는 방법은 무엇입니까?

Firestore 배열 필드의 단일 항목을 업데이트하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-15 10:02:03430검색

How to Update a Single Item in an Array Field in Firestore?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.