4 votes

Comment interroger des documents en utilisant des identifiants de document dans AngularFire?

Je tente de interroger des documents en fonction de leurs ID de document mais je suis incapable d'obtenir les données en utilisant

this.afs.collection('books' , ref => ref.where( ref.id , 'in' , ['4L9uf4w5fqFXlU0uLbEM','bpXgEOmYqGor8uhUz2uq','tJFYPJcLMYNS8qnaUtMv'])).snapshotChanges().pipe(
            map(actions => {
            return actions.map( a => {
                const data = a.payload.doc.data();
                return {...data};
            });
        })
     );

afs est de type AngularFirestore

Je ne sais pas si le code ci-dessus est correct.

J'ai essayé la solution mentionnée sur : Query firestore database for document id en remplaçant ref.id par firebase.firestore.FieldPath.documentId() mais j'obtiens une erreur :

'firebase' fait référence à un global UMD, mais le fichier actuel est un module.

Aidez-moi à récupérer les données.

9voto

sachin rathod Points 123

Je pourrais résoudre cela en remplaçant ref.id par firebase.firestore.FieldPath.documentId() et en important import * as firebase from 'firebase/app';

Le problème peut également être résolu en important import * as firebase from 'firebase'; mais comme mentionné par @Stratubas dans la section des commentaires ci-dessus, l'importation donne

un avertissement dans la console

Il est donc conseillé d'utiliser import * as firebase from 'firebase/app';

Et enfin, mon code ressemble à ceci :

import * as firebase from 'firebase/app';

this.afs.collection('books', ref => ref.where(firebase.firestore.FieldPath.documentId(), 'in', ['4L9uf4w5fqFXlU0uLbEM', 'bpXgEOmYqGor8uhUz2uq', 'tJFYPJcLMYNS8qnaUtMv'])).snapshotChanges().pipe(
            map(actions => {
                return actions.map(a => {
                    const data = a.payload.doc.data();
                    return {...data};
                });
            })
     );

0voto

Stratubas Points 16

Une alternative serait d'ajouter une propriété de chaîne id dans vos documents lors de leur création (la rendre égale à l'identifiant réel des documents) et l'utiliser pour les requêtes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X