我想删除Firebase数据库子项,但我不能

时间:2018-03-20 12:14:55

标签: java android firebase firebase-realtime-database

当我点击应用列表中的第一项时,我想删除具有以下代码的Firebase数据库子,但我不能。怎么了?

Query removeCalendar = mCalendarDatabaseReference.limitToFirst(1);
removeCalendar.addListenerForSingleValueEvent(new ValueEventListener() {

   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
       String remCal = dataSnapshot.toString();
       mCalendarioDatabaseReference.child(remCal).removeValue();
       }

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

3 个答案:

答案 0 :(得分:1)

Firebase查询返回可能满足查询的可能位置列表,您需要遍历dataSnapshot以访问这些位置。而且,这个:

String remCal = dataSnapshot.toString();

不会打印此快照的String值。如果要获取dataSnapshot的字符串值,则应为:

String remCal = dataSnapshot.getValue(String.class);

如果您想获取数据快照的引用,只需使用getRef(),您就不必访问原始引用。

Query removeCalendar = mCalendarDatabaseReference.limitToFirst(1);
removeCalendar.addListenerForSingleValueEvent(new ValueEventListener() {

   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
       for (DataSnapshot child: dataSnapshot.getChildren()) {
            child.getRef().setValue(null); //deleting the value at this location. You can also use removeValue()
        }
       }

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

答案 1 :(得分:0)

我用这段代码解决了这个问题:

Query removerCalendario = mCalendarioDatabaseReference.limitToFirst(1);
removerCalendario.addListenerForSingleValueEvent(new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot ds : dataSnapshot.getChildren()) {
        ds.getRef().removeValue();

    }
}

答案 2 :(得分:0)

您可以执行mCalendarioDatabaseReference.child(remCal).setValue(null);

相关问题