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
Lepaskan: 2024-11-26 03:03:13
asal
597 orang telah melayarinya

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
})
Salin selepas log masuk

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
})
Salin selepas log masuk

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 });
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan