【发布时间】:2021-12-27 03:18:12
【问题描述】:
我需要一些帮助。
所以我有:
data.map( (doc) => {
return (
<div>
<div> {doc.name}</div>
<div> {doc.age}</div>
</div>
)
})
这会将 Firebase Firestore 中的一些数据迭代到网页中。
然后有一个输入字段可以更改年龄。
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
如果我想更改 doc.age,我该怎么做?如果我只是像上面那样写,那么如果有 10 个名字,那么所有名字都会有相同的年龄。
如何在该“年龄”输入字段中引用“docID”,以便仅更新一个特定年龄的特定人员(姓名)?
【问题讨论】:
-
如果您只想更新一个特定文档,您需要知道该文档的 ID 并将其传递到您现在传递硬编码字符串
"docID"的位置。您知道要更新的文档的 ID 吗? -
@FrankvanPuffelen 啊,好的。我想我现在用 setData(querySnapshot.docs.map((doc) => ({...doc.data(), id:doc.id}) 做到了。我可以不时访问文档 ID将其传递给 handleSubmitAge(id)。现在只需将更新后的值传递给 handleSubmitAge(id, newAge)。我现在将尝试传递该值。非常感谢 Frank van Puffelen 先生。
-
很高兴看到您自己解决了这个问题,Vincentius! ????。您可以在下面将其作为自我回答发布,而不是在您的问题中发布解决方案。这样系统就知道有答案,未来的访问者也更容易找到(并可能投票赞成)您的答案。
标签: javascript firebase input google-cloud-firestore dynamic