【发布时间】:2017-02-07 14:10:57
【问题描述】:
我的数据库如下所示:
MYAPP
|_______________users
| |__OshwYF72Jhd9bUw56W7d
| | |
| | |__username
| | |__email
| | |__blocklist
| | |
| | |__I7Dbys9uHwbd3s4DFXo
| | | |__blockedId:"KbHy4293dYgVtT9pdoW"
| | |
| | |__J7c3en8rdILxJQSA9ij
| | | |__blockedId:"Gicuwy8r23ndoijdakr"
| | |
| | |__JicbS32uf6sg28dJD2a
| | |__GidhwgcLNA8jshda2f4
| |
| |__KbHy4293dYgVtT9pdoW
| |__PS8tgw53SnO892Jhweh
| |__Gicuwy8r23ndoijdakr
|
|__conversations
我正在尝试找出正确的 Firebase 查询来删除 blocklist 中的单个节点而不删除其他节点。
例如,我想删除等于 blockedId:"KbHy4293dYgVtT9pdoW" 的节点,但保留包含在 "users/"+globaluid+"/blocklist" 中的其他节点
这是我目前使用的代码:
function unblockUser(){
// friendToUnblock is the ID I want to remove from the block list:
var friendToUnblock = document.getElementById('hiddenUid').innerHTML;
// globaluid is the currently logged in user's ID:
var blockedRef = firebase.database().ref('users/'+globaluid+'/blocklist/');
var blockedQuery = blockedRef.orderByChild('blockedId').equalTo(friendToUnblock);
blockedQuery.once('value').then(function(blockedSnapshot) {
blockedSnapshot.ref.remove(function (error) {
if (!error) {
console.log(friendToUnblock+" should now be unblocked.");
}else{
console.log("There's been an error unblocking the user: "+error);
}
});
});
};
我认为此函数将仅针对包含匹配 ID 的节点并将其删除,但它正在删除每个节点(因此删除进程中的 blocklist 节点)。
有没有办法只定位和删除 blocklist 节点中包含的单个值而不删除其中包含的所有内容?
【问题讨论】:
标签: javascript firebase firebase-realtime-database