1
votes

Obtenir les informations utilisateur du document à partir de la requête Firestore?

J'interroge certains documents de Firestore. comment puis-je obtenir des informations utilisateur à partir de l'objet instantané.

Les informations telles que l'ID utilisateur et le nom d'utilisateur.

En supposant que l'utilisateur s'est connecté à l'aide d'un fournisseur OAuth social. SI c'est important.

firebase.firestore().collection('sample').get()
        .then(function(snapshot) {
            console.log('SNAPSHOT', snapshot);
            snapshot.forEach(function(doc) {
                console.log(doc.exists);
                console.log(doc);
                console.log(doc.id);
                console.log(doc.metadata);
                console.log(doc.ref);
                console.log(doc.data());
                console.log(doc.ref.path);
                console.log(doc);
            })
        }).catch(console.log);


3 commentaires

Firebase ne crée pas automatiquement de documents pour les utilisateurs connectés. Donc, si un tel document existe, c'est parce que votre application l'a créé. Si vous avez effectivement créé le document ailleurs, modifiez votre question pour inclure soit le code qui crée les documents utilisateur, soit une capture d'écran d'un document pertinent dans la console Firestore.


La question portait sur n'importe quel document comme les articles, les articles, les commentaires, etc. comment obtenir l'utilisateur qui les a créés. Dois-je ajouter explicitement l'ID utilisateur lorsque je crée un document pour d'autres collections.


Firestore n'associe pas les documents aux utilisateurs. Si vous souhaitez associer les documents à un utilisateur, vous pouvez soit ajouter un champ dans chaque document contenant l'utilisateur, utiliser l'UID de l'utilisateur dans / comme nom de document, soit stocker les documents pour un utilisateur dans une sous-collection.


3 Réponses :


3
votes

Firestore n'associe pas les documents aux utilisateurs. Si vous souhaitez associer les documents à un utilisateur, vous devrez le faire dans votre code d'application. Vous pouvez soit ajouter un champ dans chaque document qui contient l'utilisateur, utiliser l'UID de l'utilisateur dans / comme ID de document, soit stocker les documents pour un utilisateur dans une sous-collection.

Si vous ajoutez un champ dans chaque document qui détient l'utilisateur, vous pouvez alors obtenir tous les documents associés à cet utilisateur avec:

firebase.firestore().collection('sample').doc(firebase.auth().currentUser.uid).collection('documents')...

Si vous utilisez l'UID de l'utilisateur comme ID de document, vous pouvez obtenir le document d'un utilisateur avec:

firebase.firestore().collection('sample').doc(firebase.auth().currentUser.uid)...

Si vous stockez les documents d'un utilisateur dans une sous-collection d'un document nommé d'après l'utilisateur, vous pouvez accéder à cette collection avec:

firebase.firestore().collection('sample').where('uid', '=', firebase.auth().currentUser.uid).get()...


0 commentaires

1
votes

Comme l'a souligné Frank van Puffelen, votre application doit implémenter la logique pour créer des documents utilisateur sur Firestore / Firebase RTDB.

Le travail que vous devez faire est: 1.) créez un compte utilisateur dans firebase-backend sous «authentification». Vous pouvez donner n'importe quel e-mail combiné avec n'importe quel mot de passe - ce ne sont pas de vrais comptes Google et juste utilisés pour votre application.

2.) Écrivez la logique de connexion, afin de pouvoir vous connecter à votre application avec votre compte précédemment créé. Recherchez un message onSuccess du serveur pour vous assurer que tout fonctionne.

3.) Si un utilisateur est connecté, vous pouvez récupérer un objet firebaseAuth.currentUser de votre application et obtenir des métaDonnées supplémentaires, telles qu'un horodatage de la dernière connexion. Aussi, vous pouvez désormais récupérer son email et éventuellement créer un identifiant unique. Avec cette clé unique, vous pouvez désormais créer de nouveaux enregistrements d'utilisateurs avec vos propres données individuelles. une structure typique serait:

- l'espace de noms de votre application

- utilisateurs

---test.user@example.com

---- displayName: franc

---- âge: 47

---- aime manger: spaghetto-code

---exampleUser2@test.com

...

--données

...

J'espère que cela vous aidera!


0 commentaires

0
votes

Vous devez écrire du code backend à l'aide du SDK d'administration Firebase. Voir https://firebase.google.com/docs/auth/admin/manage -utilisateurs

admin.auth().getUser(uid)
  .then(function(userRecord) {
    // See the UserRecord reference doc for the contents of userRecord.
    console.log('Successfully fetched user data:', userRecord.toJSON());
  })
  .catch(function(error) {
    console.log('Error fetching user data:', error);
  });


1 commentaires

Si vous souhaitez obtenir les métadonnées utilisateur actuelles, vous pouvez les obtenir pendant que l'utilisateur se connecte. Firebase.auth (). SignInWithEmailAndPassword (email, mot de passe) .then (async user => {console.log (user.metadata)