i need some help.
So i have:
data.map( (doc) => { return ( <div> <div> {doc.name}</div> <div> {doc.age}</div> </div> ) })
This iterate some data from Firebase Firestore into the web page.
Then there’s an input field to change the age.
const [age, setAge] = useState(1); const handleSubmitAge = async () => { const ageRef = doc(db, "user", "docID") await updateDoc(ageRef, { age : age }); } ..... <div> <TextField value={age} onChange={ e => setAge(e.target.value)} /> <Button onChange={handleSubmitAge}> Submit Age </Button> </div
If i want to change doc.age, how do i do that? If i just write it like above, then if there are 10 names, all names will have the same age.
How do i make a reference to the “docID” in that “age” input field so that only one specific age is updated one specific person (name)?
Advertisement
Answer
Solution:
Thank you Mr. Frank van Puffelen.
Firstly, i need to access the document id for each doc in data.map( (doc) => … ). We can do that earlier when we fetch the data from Firestore
async () => { const q = query(collection(db, "collectionName"), where("category", "==", `${some condition here}`)); const querySnapshot = await getDocs(q); querySnapshot.forEach((doc) => { setData(querySnapshot.docs.map((doc) => ({...doc.data(), id:doc.id}))) }) };
That id:doc.id is what gives us the document id. Also thank you for the youtube tutorial from PedroTech and Maksim Ivanov for showing how to get this document id.