Firestore の配列フィールドの単一アイテムの更新
FirebaseFirestore のドキュメントでは、要素の追加や削除など、配列フィールドを操作する方法が説明されています。ただし、配列内の項目を直接更新するメソッドがありません。
次のようなドキュメントの場合:
{ 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 中国語 Web サイトの他の関連記事を参照してください。