2
votes

Les premières données ne fonctionnent pas

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

Firestore entrez la description de l'image ici


0 commentaires

3 Réponses :


0
votes

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;


1 commentaires

sa fonction return me avec ce code const myData = doc.data;



4
votes

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")


2 commentaires

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".



0
votes

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


2 commentaires

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.