Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengemas kini Medan Bersarang dalam Tatasusunan dalam Firestore?

Bagaimanakah Saya Boleh Mengemas kini Medan Bersarang dalam Tatasusunan dalam Firestore?

DDD
DDDasal
2024-11-14 19:37:02234semak imbas

How Can I Update a Nested Field in an Array in Firestore?

Firestore: Mengemas kini Medan Tatasusunan Bersarang

Pernyataan Masalah:

Anda mempunyai dokumen dalam Firestore dengan medan tatasusunan yang mengandungi objek. Anda perlu mengemas kini medan tertentu dalam objek di dalam tatasusunan. Walau bagaimanapun, cubaan untuk mengemas kini terus menggunakan notasi titik (item.${index}.meta.description) tidak berfungsi dengan betul.

Penyelesaian:

Firestore tidak menyokong pengemaskinian secara langsung elemen tertentu dalam tatasusunan diindeks. Sebaliknya, pertimbangkan alternatif berikut:

Pilihan 1: Tulis Semula Keseluruhan Tatasusunan

Daripada mengemas kini medan tertentu, baca keseluruhan tatasusunan daripada dokumen, buat yang diingini pengubahsuaian dalam ingatan, kemudian kemas kini medan tatasusunan yang diubah suai secara keseluruhan:

const key = `items.${this.state.index}.meta`;
let items = this.state.items;
items[this.state.index].meta.description = 'hello bar';

this.design.update({
  [key]: items,
})

Pendekatan ini menulis semula dengan berkesan keseluruhan tatasusunan, yang mungkin tidak cekap jika tatasusunan itu besar.

Pilihan 2: Gunakan Operasi Tatasusunan

Walaupun Firestore tidak membenarkan kemas kini terus kepada elemen tatasusunan sedia ada, anda masih boleh menambah atau mengalih keluar elemen menggunakan operasi tatasusunan. Contohnya, untuk menambahkan elemen baharu pada tatasusunan:

this.design.update({
  items: FieldValue.arrayUnion({
    name: 'New Item',
    meta: {
      image: 'def.png',
      description: 'hello new item',
    }
  })
})

Untuk mengalih keluar elemen, gunakan FieldValue.arrayRemove().

Cadangan:

Jika tatasusunan agak kecil, Pilihan 1 (menulis semula keseluruhan tatasusunan) boleh menjadi penyelesaian yang mudah. Walau bagaimanapun, jika tatasusunan besar, Pilihan 2 (menggunakan operasi tatasusunan) adalah lebih cekap kerana ia mengelak daripada menulis ganti keseluruhan tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini Medan Bersarang dalam Tatasusunan 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