Je ne parviens pas à extraire les données lors de la collecte, j'obtiens cette erreur
Uncaught TypeError: doc.data n'est pas une fonction
db.collection("Slides").doc("GYUzWG6jcOPob725wbnF") .onSnapshot(function(doc) { console.log("Current data: ", doc.data()); });
Je trouve la solution si je passe l'ID du correctif puis le code ci-dessous fonctionne (Bien que les identifiants soient générés de manière aléatoire par le firestore)
var db = firebase.firestore(); const docRef = db.collection("Slides"); getRealData = function() { docRef.onSnapshot(function(doc) { const myData = doc.data(); console.log(myData); }); }; getRealData();
3 Réponses :
Par le message d'erreur semble que les données ne sont pas une fonction, cela signifie que vous n'avez pas à utiliser de parenthèses lors de son attribution à une variable, alors changez votre affectation à cette ligne:
const myData = doc.data;
sa fonction return me avec ce code const myData = doc.data;
Dans votre premier exemple de code, vous supposez que le rappel d'instantané attaché à ceci:
db.collection("Slides").doc("GYUzWG6jcOPob725wbnF")
est similaire à celui attaché à ceci:
db.collection("Slides")
Je sais que ce sont deux choses différentes, j'essaie d'obtenir tous les documents sous Slides
Collections, cela ne fonctionne pas. MAIS, une fois que je passe ID
, il récupère les données. J'ai besoin de toutes les données sous Slides
Veuillez relire ma réponse et cliquer sur la documentation de l'API. Si vous obtenez un QuerySnapshot à partir du premier exemple, utilisez l'API documentée pour itérer les documents dans les résultats. Si cela vous pose un problème, posez une question précise sur la nature du problème. À l'heure actuelle, votre question est simplement de savoir "pourquoi ces choses fonctionnent différemment".
En fait, mon approche était erronée, utilisez la fonction get
pour obtenir toutes les données.
docRef.get().then(function(querySnapshot) { querySnapshot.forEach(function(doc) { // doc.data() is never undefined for query doc snapshots console.log(doc.id, " => ", doc.data()); }); });
Je pense que vous ne comprenez pas comment obtenir des données fonctionne avec Firestore ... get () n'écoutera pas les changements de données, et vous pouvez en fait faire la même chose avec la fonction onSnapshot (), il vous suffit de parcourir le tableau de objets que vous récupérez. Veuillez consulter ce firebase.google.com/docs/firestore/ query-data / get-data
@Firebaser, je suis d'accord avec vous, j'ai essayé var docRef = db.collection ("cities"). Doc ("SF");
ma collection
de données a environ 20+ ID
dynamiques. donc j'ai besoin de tous les documents d'une collection.