Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengemas kini Item Tunggal dalam Medan Tatasusunan Bersarang dalam Firestore?

Bagaimana untuk Mengemas kini Item Tunggal dalam Medan Tatasusunan Bersarang dalam Firestore?

Barbara Streisand
Barbara Streisandasal
2024-11-26 03:03:13638semak imbas

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

Cara Mengemas kini Item Tunggal dalam Medan Tatasusunan dalam Firestore

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:

  1. Baca keseluruhan tatasusunan daripada dokumen menggunakan kaedah get().
  2. Gunakan kaedah seperti map() atau find() untuk mencari dan mengubah suai elemen tertentu dalam tatasusunan.
  3. Kemas kini medan tatasusunan menggunakan kaedah set() atau kemas kini() dengan tatasusunan yang diubah suai.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn