Firestore 배열의 중첩 필드를 어떻게 업데이트할 수 있나요?

DDD
풀어 주다: 2024-11-14 19:37:02
원래의
166명이 탐색했습니다.

How Can I Update a Nested Field in an Array in Firestore?

Firestore: 중첩 배열 필드 업데이트

문제 설명:

다음을 포함하는 배열 필드가 있는 문서가 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿