Maison > interface Web > js tutoriel > Comment puis-je récupérer une liste de noms de sous-collections dans Cloud Firestore ?

Comment puis-je récupérer une liste de noms de sous-collections dans Cloud Firestore ?

Susan Sarandon
Libérer: 2024-11-29 21:07:11
original
674 Les gens l'ont consulté

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

Accès aux noms de sous-collections dans Cloud Firestore

La liste des sous-collections dans un document est une exigence courante pour organiser et parcourir les données stockées dans la structure hiérarchique de Cloud Firestore . Cependant, dans les SDK clients (y compris Web, iOS et Android), la récupération d'une liste complète des sous-collections n'est pas directement prise en charge.

Limites côté client :

Comme précisé dans la documentation officielle, "la récupération d'une liste de collections n'est pas possible avec les bibliothèques clientes mobiles/web". Ce choix de conception vise à améliorer la sécurité en limitant l'accès aux noms de sous-collections, principalement pour les tâches administratives effectuées dans des environnements de serveurs de confiance.

Dans les SDK clients, l'accès à un document renvoie uniquement les noms et valeurs des champs, à l'exclusion des noms de sous-collections. . Par exemple, l'extrait de code suivant enregistrera uniquement les noms de champs, mais pas les noms de sous-collections :

rootRef.doc('aDocument').get()
  .then(doc => {

    // only logs [ "someField", "anotherField" ], no collections
    console.log( Object.keys(doc.data()) )
  })
Copier après la connexion

Solution côté serveur :

Cependant, dans le serveur Les SDK latéraux, tels que Node.js, accédant aux noms de sous-collections sont pris en charge. Pour Node.js, la méthode ListCollectionIds offre un moyen de récupérer les noms des sous-collections dans un document.

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);
});
Copier après la connexion

Cette méthode renvoie un tableau de chaînes représentant les noms des sous-collections dans le document spécifié.

Approche alternative :

Si l'accès direct aux noms de sous-collections est crucial dans un Dans un environnement côté client, envisagez de restructurer vos données de manière à ce que les noms de sous-collections puissent être déduits ou dérivés logiquement de la structure du document. Cette approche vous permet de contourner la limitation avec élégance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal