Java 要删除firebasedatabase中的特定节点(死区提升)
我想删除Java 要删除firebasedatabase中的特定节点(死区提升),java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想删除name下的deadlift节点 我尝试过以下代码: Query queryRef = mReference.child("uid").child("exercise_name").orderByChild().equalTo("deadlift"); queryRef.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot snap
name
下的deadlift
节点
我尝试过以下代码:
Query queryRef = mReference.child("uid").child("exercise_name").orderByChild().equalTo("deadlift");
queryRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChild) {
snapshot.getRef().setValue(null);
}
});
这不起作用。因此您无法删除该项,因为您使用了错误的查询。您的查询存在三个主要问题。第一个问题是,您正在以字符串形式传递
“uid”
,而不是来自身份验证过程的实际uid
。第二个问题是您缺少两个孩子,分别是BACK
和name
。第三个问题是没有向.orderByChild()
方法传递任何内容。因此,在本例中,正确的查询应该如下所示:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
Query queryRef = mReference
.child(uid) //The uid of the user
.child("exercise_name")
.child("BACK") //Was missing
.child("name") //Was missing
.orderByChild("-M2o26QvqcTmytlmact9") //The argument was missing
.equalTo("deadlift");
虽然上面的查询可以工作,但我建议您使用另一种模式来帮助您更轻松地查询数据库:
Firebase-root
|
--- uid
|
--- BACK
|
--- name
|
--- deadlift: true
这是相应的查询:
Query queryRef = mReference
.child(uid)
.child("exercise_name")
.child("BACK")
.child("name")
.orderByChild("deadlift")
.equalTo(true);