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