問題ステートメント:
次の配列フィールドを持つドキュメントが 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 サイトの他の関連記事を参照してください。