javascript - 如何从 Firebase 实时数据库中删除数据(使用 prevChildKey)?
问题描述
我在这里问过一个问题,我一直在处理相同的代码。我不知道如何使用 prevChildKey 删除项目。
控制台错误给出这个:
未捕获的 ReferenceError:在 HTMLButtonElement.onclick (index.html:1) 中未定义 deleteData
索引.html
<div id="list_div" class="list-div">
</div>
index.js
// Database Reference
var DataRef = firebase.database().ref('users/' + currentUser.uid + '/exercises/');
// Read data from database
function readData(){
//var readDataRef = firebase.database().ref('users/' + currentUser.uid + '/exercises/');
DataRef.on("child_added", function(data, prevChildKey) {
var newData = data.val();
console.log("ID: " + prevChildKey);
console.log("name: " + newData.name);
console.log("sets: " + newData.sets);
console.log("reps: " + newData.reps);
console.log("weights: " + newData.weights);
document.getElementById("list_div").innerHTML+=`
<div id="listitem_div" class="listitem-div">
<span class="listtext">Exercise Name: </span>${newData.name}<br>
<span class="listtext">Set: </span>${newData.sets}
<span class="listtext">Reps: </span>${newData.reps}
<span class="listtext">Weights: </span>${newData.weights}
<button type="submit" id="itemremove" class="itemremove" onclick="deleteData(${prevChildKey})">Delete</button>
</div>
`
});
}
//Delete data from database
function deleteData(prevChildKey){
var newDataRef = firebase.database().ref('users/' + currentUser.uid + 'exercises/' + prevChildKey);
newDataRef.remove()
}
解决方案
您收到的prevChildKey
不是您要删除的练习的键。
而是使用data.key
获取练习的 id 并对其调用 remove。
console.log("ID: " + data.key);
推荐阅读
- git - 查找源代码控制下包含在 .gitignore 中的所有文件
- python - 在本地化页面中删除缓存的问题
- android - android.widget.SelectionActionModeHelper$TextClassificationHelper.init (SelectionActionModeHelper.java:974)
- python - 任何人都知道使用python获取instagram帖子网址的方法(不是图片或视频的网址,而是整个帖子)
- python - 删除了 python 并尝试使用 WSL 重新安装它但无法
- mongodb - 如何从 mongo 集合中的数组属性中删除元素
- flutter - 如何将 Flutter speech_to_text 依赖项用于英语以外的语言。例如:阿姆哈拉语(埃塞俄比亚当地语言)
- python - Pip 包(钟摆 2.1)安装失败并出现 FileNotFoundError
- php - Woocommerce 订阅:更改付款方式应该有 0 订阅费
- regex - 字符串的正则表达式,并且不能在某个位置包含数字