我有一个firebase数据结构,如下所示:
|---groups
| |---group1
| | |---membernames
| | |---xy_unknownid
| | |---givenname: "userx"
| | |---tv_unknownid
| | |---givenname: "usery"
现在我要删除节点xy_unknownid。但我只知道“givenname”:userx。
我尝试删除节点:
mFirebaseDatabaseReference
.child("groups")
.child("group1")
.child("membernames")
.child("$member")
.child("userx")
.getParent()
.setValue(null);
但这不起作用,因为“无效的Firebase数据库路径:$ member.Firebase数据库路径不得包含'。','#','$','['或']'”
所以我的问题是,如何删除节点:“xy_unknownid”只知道:“userx”。
提前致谢。
答案 0 :(得分:1)
试试这段代码并告诉我这是否有效,
mFirebaseDatabaseReference.child("groups").child("group1").child("membernames").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for(DataSnapshot dataSnapshot1:snapshot.getChildren())
{
if(dataSnapshot1.child("givenname").getValue().toString().equals("userx"))
{
dataSnapshot1.getRef().setValue(null);
break;
}
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
答案 1 :(得分:0)
您需要分两步完成:
使用query:
获取xy_unknownidmFirebaseDatabaseReference.child("groups").child("group1").child("membernames"). orderByChild("givenname").equalTo("user")
在回调中获得响应后,您可以使用
获取密钥dataSnapshot.getKey()
并使用该密钥使用setValue(null)
或removeValue()