Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Dapatkan Senarai Nama Subkoleksi dalam Cloud Firestore?

Bagaimanakah Saya Boleh Dapatkan Senarai Nama Subkoleksi dalam Cloud Firestore?

Susan Sarandon
Susan Sarandonasal
2024-11-29 21:07:11723semak imbas

How Can I Retrieve a List of Subcollection Names in Cloud Firestore?

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!

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