Dalam Firestore, tatasusunan boleh bersarang dalam dokumen. Walau bagaimanapun, adalah penting untuk memahami bahawa medan tatasusunan dalam Firestore berkelakuan berbeza daripada tatasusunan dalam bahasa pengaturcaraan lain.
Pernyataan Masalah:
Mengemas kini elemen tertentu dalam medan tatasusunan dalam dokumen Firestore boleh mencabar. Percubaan untuk mengemas kini terus medan bersarang dalam tatasusunan, seperti item[0].meta.description, boleh membawa kepada hasil yang tidak dijangka.
Pendekatan Awal:
Pada mulanya, anda mencuba untuk mengemas kini medan bersarang dengan menggunakan kod berikut:
const key = `items.${this.state.index}.meta.description`; const property = `hello bar`; this.design.update({ [key]: property })
Walau bagaimanapun, pendekatan ini mengalih keluar semua medan lain daripada objek pada indeks yang ditentukan.
Pendekatan Alternatif:
Dalam percubaan anda yang seterusnya, anda menulis semula keseluruhan objek meta:
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 })
Sementara pendekatan ini berjaya mengemas kini medan bersarang, ia menukar tatasusunan menjadi an objek.
Penyelesaian:
Firestore tidak menyediakan cara langsung untuk mengemas kini item tertentu dalam tatasusunan. Sebaliknya, anda mesti membaca keseluruhan tatasusunan daripada dokumen, mengubah suainya dalam ingatan, dan kemudian mengemas kini keseluruhan medan tatasusunan.
Ini boleh dicapai menggunakan langkah berikut:
Berikut ialah contoh kod:
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 });
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Item Tunggal dalam Medan Tatasusunan Bersarang dalam Firestore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!