Firestore の配列フィールドの単一アイテムを更新する
Firestore ドキュメントに items という配列フィールドがあり、次のことを行いたいとします。配列内のいずれかのオブジェクト内のフィールドを更新します。
Initial Attempt
最初の試行では次のコードが使用されました:
const key = `items.${this.state.index}.meta.description` const property = `hello bar`; this.design.update({ [key]: property }) ...
ただし、これにより、指定された配列インデックスにあるオブジェクト全体が削除され、説明フィールドのみが残りました。
変更された試行
変更された試行では次のものが使用されましたコード:
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 }) ...
これにより、項目配列がオブジェクトに変換され、配列構造が失われているようです。
Firestore の制限
Firestore には制限があります。配列フィールドを更新しています。要素の追加または削除のみが可能であり、既存の要素の変更はできません。
解決策
配列フィールド内の項目を変更するには、配列全体を読み取る必要があります。メモリ内で必要な変更を加えてから、変更された配列フィールド全体を更新します。
const items = this.design.get("items"); // Read the array field items[this.state.index].meta.description = "hello bar"; // Modify the item this.design.update({ items: items // Update the entire modified array }) ...
このアプローチを使用すると、配列内の特定の項目を更新できます。配列構造を失うことなくフィールドを削除します。
以上がFirestore の配列フィールド内の単一アイテムを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。