Home > Software design >  cannot get fields from SnapShot in firebase
cannot get fields from SnapShot in firebase

Time:08-12

I'm trying to get the real-time document fields (text and timeStamp) to be displayed from the "first" collection in firestore collection, with the use of onSnapshot. I can verify that the snapshot realtime updation is working, on addition of a new document, it does shows an update. But I cannot access the text and timeStamp in the document.

onSnapshot(collection(db, 'first'), (snapshot) => {
        console.log(snapshot.text, snapshot.timeStamp);
      });

It just shows undefined to me. Also, I just want to access this database, db only when the user is authenticated. So is there a way to check if the user is authenticated?

CodePudding user response:

To get the data from a document snapshot, you need to call data() on it. In addition, since you're reading an entire collection, you get back a query snapshot that can contain multiple documents, which you also need to handle.

So:

onSnapshot(collection(db, 'first'), (querySnapshot) => {
  querySnapshot.docs.forEach((docSnapshot) => {
    console.log(docSnapshot.data().text, docSnapshot.data().timeStamp);
  })
});

See the documentation on getting data from Firestore and on reading all documents from a collection for more examples like this.

  • Related