javascript - 删除与某个子值关联的整个记录
问题描述
我想使用输入的子值删除数据库中的整个记录这是我尝试的代码
<body>
User Name:
<input type="text" name="user_name" id="user_name" placeholder="enter text"/><br><br>
Enter Email:
<input type="text" name="user_name" id="user_name2" placeholder="enter email" />
<br><br>
<input type="button" value="Save" onclick="save_user();" />
<input type="button" value="delete" onclick="delete_user();" />
<script>
var tblUsers = document.getElementById('tbl_users_list');
var databaseRef = firebase.database().ref('users/');
var rowIndex = 1;
var uid;
var childKey;
var childData;
databaseRef.once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
childSnapshot.key;
childSnapshot.val();
var row = tblUsers.insertRow(rowIndex);
var cellId = row.insertCell(0);
var cellName = row.insertCell(1);
cellId.appendChild(document.createTextNode(childKey));
cellName.appendChild(document.createTextNode(childData.user_name));
cellName.appendChild(document.createTextNode(childData.user_name2));
rowIndex = rowIndex + 1;
});
});
function save_user(){
var user_name = document.getElementById('user_name').value;
var user_name2 = document.getElementById('user_name2').value;
uid = firebase.database().ref().child('users').push().key;
var data = {
user_id: uid,
user_name: user_name,
password: user_name2
}
var updates = {};
updates['/users/' + uid] = data;
firebase.database().ref().update(updates);
alert('The user is created successfully!');
reload_page();
document.writeln(uid);
}
function update_user(){
var user_name = document.getElementById('user_name').value;
var user_id = document.getElementById('user_id').value;
var data = {
user_id: user_id,
user_name: user_name
}
var updates = {};
updates['/users/' + user_id] = data;
firebase.database().ref().update(updates);
alert('The user is updated successfully!');
reload_page();
}
function delete_user(){
var user_id = document.getElementById('user_id').value;
firebase.database().ref().child('/users/' + user_id).remove();
alert('The user is deleted successfully!');
reload_page();
}
这里要引用和删除的子值是 user_name2
我想要从这段代码中删除与其关联的子值的记录
例如,我想删除与子名称密码“ddd”关联的整个记录
解决方案
Firebase 只能在知道该节点的完整、准确路径的情况下才能写入该节点。如果您只知道节点的属性值,则首先需要执行查询以找到具有该值的节点,然后写入这些节点。
所以在你的情况下,这将是这样的:
let password = "ddd"; // hard-coded value, but this could also be read from the HTML
let ref = firebase.database().ref("users");
let query = ref.orderByChild("password").equalTo(password);
query.once("value").then(function(results) {
results.forEach(function(snapshot) {
snapshot.ref.remove();
})
})
推荐阅读
- c# - 如何在 C# 中的石头、纸、剪刀游戏中随机化数组中的变量?
- c++ - 如何更改 C++ 类成员的类型
- flutter - 使用streambuilder颤动firestore分页
- python - 程序运行时输出不如预期
- powershell - 如何在 PowerShell Plus 中创建一组接受用户输入的文件夹
- python - Scrapy 没有使用我的 FilesPipeline,即使我已经尽一切努力启用它
- javascript - 如何在 JavaScript 中的数组数组中执行不区分大小写的操作?
- c++ - Visual Studio 2019 为 C26444 提供 cout.imbue
- node.js - POST http://localhost:3000/api/sendMail 404(未找到)
- bash - 在 VSCode 中克隆的 Bash 脚本 Git 会自动转换为 DOS 格式