Essayer de répertorier une collection de bases de données Firestore
P粉546179835
P粉546179835 2023-08-24 23:19:00
0
1
551
<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粉546179835
P粉546179835

répondre à tous(1)
P粉265724930

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)

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal