Rumah  >  Soal Jawab  >  teks badan

Cuba menyenaraikan koleksi pangkalan data Firestore

<p>Saya ingin menyenaraikan koleksi pangkalan data Firestore dalam aplikasi Ionic4, jadi saya menggunakan dokumen daripada bahagian listCollection, jadi saya telah menggunakan kod sampel dalam kod saya: </p> <pre class="brush:php;toolbar:false;">this.afs.firestore.listCollections().then(collections => { untuk (biar koleksi koleksi) { console.log(`Terjumpa koleksi dengan id: ${collection.id}`); } });</pre> <p>Ini ialah pembina saya: </p> <pre class="brush:php;toolbar:false;">constructor(penghala peribadi: Router, afs peribadi: AngularFirestore, fireauth peribadi: AngularFireAuth) { }</pre> <p>Saya mendapat ralat ini: ralat TS2339: Harta 'listCollections' tidak wujud pada jenis 'Firestore'. </p> <p>Saya tidak boleh menggunakan senarai atributCollections kerana ia berada dalam dokumentasi dalam talian... </p>
P粉546179835P粉546179835420 hari yang lalu515

membalas semua(1)saya akan balas

  • P粉265724930

    P粉2657249302023-08-25 19:54:35

    Malah, seperti yang dinyatakan dalam dokumentasi Firestore JS SDK , tidak mungkin untuk mendapatkan semula senarai koleksi menggunakan perpustakaan klien mudah alih/web.

    Ini terpakai bukan sahaja pada koleksi akar pangkalan data Firestore, tetapi juga pada subkoleksi dokumen Firestore.

    Walau bagaimanapun, seperti yang anda nyatakan dalam soalan anda, adalah mungkin menggunakan Cloud Firestore Node.js API pelanggan. Jadi, anda boleh menggunakan Fungsi Awan untuk menyenaraikan koleksi pangkalan data Firestore dan memanggil fungsi awan ini dari bahagian hadapan.

    Memandangkan anda akan memanggil fungsi awan ini daripada apl anda, kami menggunakan Fungsi Awan Boleh Panggil .

    Kod fungsi awan

    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    
    admin.initializeApp();
    
    exports.getCollections = functions.https.onCall(async (data, context) => {
    
        const collections = await admin.firestore().listCollections();
        const collectionIds = collections.map(col => col.id);
    
        return { collections: collectionIds };
    
    });

    Kod bahagian hadapan

    Untuk memanggil fungsi awan boleh panggil ini daripada aplikasi Angular anda, ikut sahaja dokumentasi Angularfire Cloud Function.

    import { Component } from '@angular/core';
    import { AngularFireFunctions } from '@angular/fire/functions';
    
    @Component({
      selector: 'app-root',
      template: `{ data$  | async }`
    })
    export class AppComponent {
      constructor(private fns: AngularFireFunctions) { 
        const callable = fns.httpsCallable('getCollections');
        this.data$ = callable({ .... });
      }
    }

    Sila ambil perhatian bahawa kaedah ini diilhamkan oleh artikel berikut tentang cara menyenaraikan semua subkoleksi dokumen Cloud Firestore menggunakan SDK JS. (Penafian: Saya pengarang)

    balas
    0
  • Batalbalas