web-dev-qa-db-fra.com

Obtenir une référence de document Cloud Firestore à partir d'un document

Le problème

J'essaie de récupérer la référence du document à partir d'une requête. Mon code renvoie undefined. Je peux obtenir le chemin en extrayant diverses parties de documentSnapshot.ref, mais ce n'est pas simple.

Ce que je voudrais retourner est une référence que je pourrai ensuite utiliser pour .update le document, sans avoir à spécifier la collection et à utiliser documentSnapshot.id

La documentation de la propriété path est ici

Mon code

const db = admin.firestore();

return db.collection('myCollection').get().then(querySnapshot => {
  querySnapshot.forEach(documentSnapshot => {
    console.log(`documentReference.id   = ${documentSnapshot.id}`);
    console.log(`documentReference.path = ${documentSnapshot.path}`);
    // console.log(`documentReference.ref = ${JSON.stringify(documentSnapshot.ref)}`);
  });
});

Production

documentReference.id   = Jez7R1GAHiR9nbjS3CQ6
documentReference.path = undefined
documentReference.id   = skMmxxUIFXPyVa7Ic7Yp
documentReference.path = undefined
18
Jason Berryman

Dans votre code, documentSnapshot est un objet de type DocumentSnapshot . Il semble que vous supposiez qu'il s'agit d'un objet de type DocumentReference . Un but d'une référence est de localiser un document. Le but d'un instantané est de recevoir le contenu d'un document après qu'il a été interrogé - ce n'est certainement pas la même chose. Un DocumentSnapshot n'a pas de propriété path.

Si vous souhaitez que la DocumentReference d'un document qui a été récupéré dans un DocumentSnapshot, vous pouvez utiliser ref dans le snapshot. Ensuite, vous pouvez obtenir la propriété path de la référence:

documentSnapshot.ref.path
22
Doug Stevenson