Firestore では、ドキュメント内で配列をネストできます。ただし、Firestore の配列フィールドは他のプログラミング言語の配列とは動作が異なることを理解することが重要です。
問題ステートメント:
Firestore ドキュメントの配列フィールド内の特定の要素を更新する挑戦的になる可能性があります。 items[0].meta.description など、配列内のネストされたフィールドを直接更新しようとすると、予期しない結果が生じる可能性があります。
最初のアプローチ:
最初に、次のコードを使用してネストされたフィールドを更新するには:
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 })
このアプローチでは、ネストされたフィールドは正常に更新されました。 、配列をobject.
解決策:
Firestore には、配列内の特定の項目を更新する直接的な方法がありません。代わりに、ドキュメントから配列全体を読み取り、メモリ内で変更してから、配列フィールド全体を更新する必要があります。
これは、次の手順を使用して実現できます:
コード例は次のとおりです:
const docRef = firestore.doc(`document/${id}`); let items; // Read the document and retrieve the items array await docRef.get().then((doc) => { if (doc.exists) { items = doc.data().items; } }); // Update the specific element in the array const updatedItem = items.find((item) => item.name === 'Bar'); updatedItem.meta.description = 'hello bar'; // Update the entire array field with the modified array await docRef.update({ items });
以上がFirestore の入れ子になった配列フィールド内の単一の項目を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。