Firebase Realtime Database删除代码执行成功但数据未删除的问题求助
问题分析与修复方案
你的代码存在一个关键错误,导致数据库数据未被实际删除:
你已经通过document.getElementById('deleteCrop').value获取到了输入框的内容并赋值给deleteCrop1,但构建数据库引用时错误地调用了deleteCrop1.value——deleteCrop1本身就是字符串类型的输入值,并没有.value属性,这会让最终拼接的数据库路径变成Crops/undefined(输入框为空时则是Crops/),根本指向不到你要删除的目标节点。
另外,Firebase Realtime Database的remove()方法在删除不存在的节点时,不会触发catch回调,而是会正常进入then流程,所以你会看到成功提示,但实际没有删除任何有效数据。
修正后的代码
DeleteData1.addEventListener('click',(e)=>{ var deleteCrop1 = document.getElementById('deleteCrop').value; // 移除多余的.value remove(ref(database, "Crops/" + deleteCrop1)) .then(()=>{ alert("Crop successfully deleted"); }) .catch((error)=>{ alert("Unsuccessful, error" + error); }) });
额外优化建议
可以在删除前判断输入内容是否为空,避免无效操作:
DeleteData1.addEventListener('click',(e)=>{ var deleteCrop1 = document.getElementById('deleteCrop').value; if (!deleteCrop1.trim()) { alert("请输入要删除的作物标识"); return; } remove(ref(database, "Crops/" + deleteCrop1)) .then(()=>{ alert("Crop successfully deleted"); }) .catch((error)=>{ alert("Unsuccessful, error" + error); }) });
内容的提问来源于stack exchange,提问作者Taneda
相关产品推荐
相关产品推荐

