如何将路由传参页面的手机号字段更新至Firestore并解决doc ID缺失报错
问题原因
你当前代码调用db.collection("FinalData").doc()时没有传入要更新的文档ID,Firestore无法识别你需要修改集合内的哪条数据,所以会抛出doc ID缺失的错误。
解决步骤
- 跳转ItemDetails页面前,在列表页渲染
FinalData集合数据时,每条数据都会自带Firestore生成的唯一id属性,跳转时需要把这个ID作为参数一起传入route.params - 在ItemDetails页面从路由参数中取出该文档ID,传入
doc()方法即可
修改后代码示例
const ItemDetails = ({ route }) => { const[values, setValue] = useState('') let data = route.params // 此处假设你跳转传参时把文档ID存在了docId字段,可根据你实际的传参字段名调整 const targetDocId = data.docId console.log(data) const updateValue = () => { db.collection("FinalData") // 传入目标文档ID .doc(targetDocId) .update({ mobile_no: values }) .then(function () { alert("Mobile Number Updated Successfully") }) // 新增错误捕获方便排查权限、数据不存在等其他问题 .catch(err => console.log("更新失败:", err)) } }
注意事项
- 不要使用业务字段作为文档ID传入,必须使用Firestore返回的每条数据自带的
id属性 - 若之前列表页没有传递文档ID,修改跳转逻辑把对应ID带上即可
内容的提问来源于stack exchange,提问作者kazim ali
相关产品推荐
相关产品推荐

