recherche

Maison  >  Questions et réponses  >  le corps du texte

Essayer de répertorier une collection de bases de données Firestore

<p>Je souhaite répertorier une collection de bases de données Firestore dans une application Ionic4, j'utilise donc le document de la section listCollection, j'ai donc appliqué l'exemple de code dans mon code : </p> <pre class="brush:php;toolbar:false;">this.afs.firestore.listCollections().then(collections => { pour (laisser la collection de collections) { console.log(`Collection trouvée avec l'identifiant : ${collection.id}`); } });</pré> <p>Voici mon constructeur : </p> <pre class="brush:php;toolbar:false;">constructor(routeur privé : routeur, afs privés : AngularFirestore, fireauth privé : AngularFireAuth) { }</pre> <p>J'obtiens cette erreur : erreur TS2339 : la propriété 'listCollections' n'existe pas sur le type 'Firestore'. </p> <p>Je ne peux pas utiliser l'attribut listCollections car il se trouve dans la documentation en ligne... </p>
P粉546179835P粉546179835461 Il y a quelques jours550

répondre à tous(1)je répondrai

  • P粉265724930

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

    En fait, comme indiqué dans la documentation du SDK Firestore JS, il n'est pas possible de récupérer la liste des collections à l'aide des bibliothèques client mobile/web.

    Cela s'applique non seulement à la collection racine de la base de données Firestore, mais également aux sous-collections de documents Firestore.

    Cependant, comme vous l'avez mentionné dans votre question,

    il est possible d'utiliser l'API client Cloud Firestore Node.js. Ainsi, vous pouvez utiliser une fonction Cloud pour répertorier une collection de bases de données Firestore et appeler cette fonction cloud depuis le frontend.

    Puisque vous allez appeler cette fonction cloud depuis votre application, nous utilisons la

    Callable Cloud Function .

    Code de fonction Cloud

    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 };
    
    });

    Code frontal

    Pour appeler cette fonction cloud appelable depuis votre application Angular, suivez simplement la

    Documentation de la fonction Cloud d'Angularfire.

    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({ .... });
      }
    }


    Notez que cette méthode s'inspire de l'

    article suivant sur la façon de lister toutes les sous-collections d'un document Cloud Firestore à l'aide du SDK JS. (Avertissement : je suis l'auteur)

    répondre
    0
  • Annulerrépondre