javascript - 如何使用 Javascript 在 Firebase 中执行特定子项的删除操作
问题描述
我正在尝试为使用 Firebase Realtime db 的表编写删除函数。我对此有点陌生,但我需要帮助。
我正在尝试获取子 ID 并将其传递给函数以删除它,到目前为止..
var mainApp = {};
(function(){
var firebase = app_firebase;
var uid = null;
function fnHRead() {
var path = 'institutions/' + uid;
app_firebase.databaseApi.read(path, sucessFn, messageHandler)
function sucessFn(snapShot){
if(!!snapShot && !!snapShot.val()){
//console.log(snapShot.val());
var inst_info = snapShot.val();
var keys = Object.keys(inst_info);
console.log(keys);
var html = "<table class='centered' border='1|1'>";
html+= "<thead>";
html+= "<tr>";
html+= "<th>Institution Name</th>";
html+= "<th>Proprietor</th>";
html+= "<th>Phone</th>";
html+= "<th>Email</th>";
html+= "<th>Locality</th>";
html+= "<th>City</th>";
html+= "<th>Manage</th>";
html+= "</tr>";
html+= "</thead>";
for (var i = 0;i < keys.length; i++){
var k = keys[i];
var name = inst_info[k].inst_name;
var ownerName = inst_info[k].inst_owner;
var email = inst_info[k].inst_email;
var phone = inst_info[k].inst_phone;
var locality = inst_info[k].inst_locality;
var city = inst_info[k].inst_city;
var path = keys[i];
html+="<tr>";
html+="<td>"+name+"</td>";
html+="<td>"+ownerName+"</td>";
html+="<td>"+phone+"</td>";
html+="<td>"+email+"</td>";
html+="<td>"+locality+"</td>";
html+="<td>"+city+"</td>";
html+="<td><a class='waves-effect waves-light btn red' onclick='mainApp.deletePatient("+path+")'>Delete</a></td>";
html+="</tr>";
//console.log(name,ownerName,email,phone,locality,city);
console.log(path);
}
html+="</table>";
document.getElementById("manageExist").innerHTML = html;
M.toast({html: 'Institution list Fetch Sucessfull', classes: 'rounded'});
}else{
console.log("No data");
M.toast({html: 'Institution list Fetch Unsucessful', classes: 'rounded'});
}
}
}
function fnHDelete(path){
app_firebase.databaseApi.delete(path, messageHandler);
}
mainApp.deletePatient = fnHDelete;
})()
另一个 .js,其中包含用于 CRUD 操作的 firebase 凭据和函数
function dbDelete(path, callBack){
if(!path) return;
app_firebase.database().ref(path).remove(callBack);
}
我在控制台中遇到的错误:
dashboard.html:1 Uncaught ReferenceError: LXntMDT74LL_suY6Ar0 is not defined
at HTMLAnchorElement.onclick (dashboard.html:1)
解决方案
首先,javascript 是一种专门用于客户端的语言,用户应用程序在任何情况下都不应因为一些安全问题而直接与数据库对话。
回答您的问题:Firebase 有一个removeValue()
可用于删除元素的命令:Docs Link
编辑:您正在调用要删除的回调,而不是路径。不太确定,如果这是错误,但值得一试。
推荐阅读
- jquery - 单击子菜单时,我想将类添加到父菜单
- excel - VBA在运行脚本时不刷新数据,只有在
- python-3.x - 如何从 Python pod 中访问 kube-apiserver?
- c# - 将查询字符串传递给 HttpRequestMessage
- angularjs - 过滤 JSON 数组
- javascript - 在 React JS 中使用 key 属性
- android - 通过 Safe Args 将数据传回之前的 Fragment。这怎么可能?
- python - 如何检查点是否在多边形 shapefile 内? pandas
- uml - 为财务软件设计领域模型(类图)
- javascript - React Native 将日期保持为类组件中的状态