Android 如何使用键值或字段键从firebase实时数据库中删除所有字段和值?

Android 如何使用键值或字段键从firebase实时数据库中删除所有字段和值?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,问题中的代码删除了整个DailyExpenseTable节点,因此也删除了该节点下的所有费用 如果要删除其下的单个节点,并且知道该节点的密钥,可以使用以下方法删除该节点: DatabaseReference dr1 = FirebaseDatabase.getInstance().getReference("DailyExpenseTable"); dr1.removeValue(); Toast.makeText(getActivity(),"DailyExpense Removed",Toa

问题中的代码删除了整个DailyExpenseTable节点,因此也删除了该节点下的所有费用

如果要删除其下的单个节点,并且知道该节点的密钥,可以使用以下方法删除该节点:

DatabaseReference dr1 = FirebaseDatabase.getInstance().getReference("DailyExpenseTable");
dr1.removeValue();
Toast.makeText(getActivity(),"DailyExpense Removed",Toast.LENGTH_LONG).show();`
如果您不知道该键,但知道另一个属性,则可以先执行查询,然后使用以下命令删除该查询的结果:

DatabaseReference dr1 = FirebaseDatabase.getInstance().getReference("DailyExpenseTable");
dr1.child("-M2QsnCvO7jTtZbXp47s").removeValue();
在后一种情况下,如果多个费用对dailyExpenseID具有相同的值,则可能最终删除多个节点

如果这是不可能发生的,您可能需要考虑使用DayiExpExeSID作为子节点的密钥。因此,请将它们存储在:

DatabaseReference dr1 = FirebaseDatabase.getInstance().getReference("DailyExpenseTable");
dr.orderByChild("dailyExpenseID").equalTo("2").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot expenseSnapshot: dataSnapshot.getChildren()) {
            expenseSnapshot.getRef().removeValue();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

而不是dr1.push.setValue。。。你现在可能会用到的。

嘿,普夫。有一个.getRef调用丢失。应为ExpenseSnashot.getRef.removeValue;。说得好,亚历克斯。谢谢,已经修好了。以后您可以自己做这样的编辑。顺便说一句,对于SO的维基性质是很好的好的,我会的。谢谢
dr1.child(expenseId).setValue(...)