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

DDD
Lepaskan: 2024-11-14 19:37:02
asal
166 orang telah melayarinya

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

Pendekatan ini menulis semula keseluruhan tatasusunan dengan berkesan, 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',
    }
  })
})
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan