ホームページ >ウェブフロントエンド >jsチュートリアル >Firestore で配列内のネストされたフィールドを更新するにはどうすればよいですか?

Firestore で配列内のネストされたフィールドを更新するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-14 19:37:02243ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。