这是firebase数据结构。
在这里,我想选择所有具有值的节点"停止"并删除它们。我写这段代码但这不起作用。
final Map<String, Object> map = new HashMap<String, Object>();
Query numberQuery = reference.child("numbers").orderByChild("stop");
numberQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
for (DataSnapshot eachDataSnapShot : dataSnapshot.getChildren()) {
map.put("/numbers/"+eachDataSnapShot.getKey(), null);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
reference.updateChildren(map);
实际上,我没有得到如何在firebase文档中使用查询。如果有任何其他方法(不使用查询)告诉我。
答案 0 :(得分:1)
我找到了答案,有一个问题我正在使用orderByChild()
,但我不得不在那里使用orderByValue()
。所以我只是将orderByChild("stop")
更改为orderByValue().equalTo("stop")
并且它有效。
Query numberQuery = reference.child("numbers").orderByValue().equalTo("stop");
numberQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
for (DataSnapshot eachDataSnapShot : dataSnapshot.getChildren()) {
map.put("/numbers/"+eachDataSnapShot.getKey(), null);
}
reference.updateChildren(map);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:0)
您可以使用orderByValue()
,它会按照这种方式对其进行排序:
检查this