Firestore の配列フィールド内の単一アイテムを更新するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-15 10:02:03
オリジナル
433 人が閲覧しました

How to Update a Single Item in an Array Field in Firestore?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート