Mengakses Nama Subkoleksi dalam Cloud Firestore
Menyenaraikan subkoleksi dalam dokumen ialah keperluan biasa untuk mengatur dan menavigasi data yang disimpan dalam struktur hierarki Cloud Firestore . Walau bagaimanapun, dalam SDK pelanggan (termasuk Web, iOS dan Android), mendapatkan semula senarai lengkap subkoleksi tidak disokong secara langsung.
Penghadan Sebelah Pelanggan:
Seperti yang dinyatakan dalam dokumentasi rasmi, "mendapatkan semula senarai koleksi tidak boleh dilakukan dengan perpustakaan klien mudah alih/web." Pilihan reka bentuk ini bertujuan untuk meningkatkan keselamatan dengan mengehadkan akses kepada nama subkoleksi, terutamanya untuk tugas pentadbiran yang dilakukan dalam persekitaran pelayan yang dipercayai.
Dalam SDK klien, mengakses dokumen hanya mengembalikan nama medan dan nilai, tidak termasuk sebarang nama subkoleksi . Sebagai contoh, coretan kod berikut hanya akan log nama medan, tetapi bukan nama subkoleksi:
rootRef.doc('aDocument').get() .then(doc => { // only logs [ "someField", "anotherField" ], no collections console.log( Object.keys(doc.data()) ) })
Penyelesaian Sisi Pelayan:
Walau bagaimanapun, dalam pelayan SDK sisi, seperti Node.js, mengakses nama subkoleksi disokong. Untuk Node.js, kaedah ListCollectionIds menawarkan cara untuk mendapatkan semula nama subkoleksi dalam dokumen.
var firestore = require('firestore.v1beta1'); var client = firestore.v1beta1({ // optional auth parameters. }); // Iterate over all elements. var formattedParent = client.anyPathPath("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]"); client.listCollectionIds({parent: formattedParent}).then(function(responses) { var resources = responses[0]; for (var i = 0; i < resources.length; ++i) { // doThingsWith(resources[i]) } }) .catch(function(err) { console.error(err); });
Kaedah ini mengembalikan tatasusunan rentetan yang mewakili nama subkoleksi dalam dokumen yang ditentukan.
Pendekatan Alternatif:
Jika akses terus kepada nama subkoleksi adalah penting dalam persekitaran pihak pelanggan, pertimbangkan untuk menstruktur semula data anda supaya nama subkoleksi boleh disimpulkan atau diperoleh secara logik daripada struktur dokumen. Pendekatan ini membolehkan anda mengatasi had dengan anggun.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Senarai Nama Subkoleksi dalam Cloud Firestore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!