I am a new developer with no experience in Web apps. I have a collection called "users" in Firestore in which the document IDs are the user's emails. I am trying to read the data in one of the documents following the example provided by Firebase here
I get two errors:
I bypassed the first one by ommiting "await", but cannot avoid the second. Have you got any idea of what is wrong with my code?
console.log(docSnap) gives the following message: "Promise {pending}"
Thanks.
requestForm.addEventListener('submit', (event) => {
event.preventDefault();
const user = auth.currentUser;
const docSnap = await getDoc(doc(db, "users", user.email));
if (docSnap.exists()) {
console.log("Document data:", docSnap.data());
} else {
console.log("No such document!");
}
})
Looks like you return a Promise and it does not meet the requirements of async/await. Try this way.
getDoc(doc(db, "users", user.email)).then(docSnap => {
if (docSnap.exists()) {
console.log("Document data:", docSnap.data());
} else {
console.log("No such document!");
}
})
Be careful, getDoc vs getDocs
For single document
import { doc, getDoc } from "firebase/firestore";
const docRef = doc(db, "cities", "SF");
const docSnap = await getDoc(docRef);
if (docSnap.exists()) {
console.log("Document data:", docSnap.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
For all document
import { collection, getDocs } from "firebase/firestore";
const querySnapshot = await getDocs(collection(db, "cities"));
querySnapshot.forEach((doc) => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});