有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从firebase中删除?

getReference(“Posts”)。儿童(postKey)。子(“日期”),其中日期以“日期”形式书写(将在未来,例如,2020年4月30日以字符串格式)。我想写一个程序,将发生“Post”以获得整个日期,如果当前日期和日期来自“Post”(currentDate==日期(“Post”)),则删除此Post。如何从列表中获取所有内容进行比较

enter image description here

我在添加“Post”的地方添加了代码。我从calendarView中获取日期,它是用俄语书写的,非常方便

private void deletePostFromFirebase(){
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
    Date date = new Date();
    String newDate = simpleDateFormat.format(date);
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Posts");
    ref.orderByChild("date").equalTo(newDate).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot itemSnapshot: dataSnapshot.getChildren()) {
                itemSnapshot.getRef().removeValue();
            }
        }

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

共 (1) 个答案

  1. # 1 楼答案

    如果要根据条件删除日期,则可以执行以下操作:

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Posts");
    ref.orderByChild("date").equalTo(date).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
              for(DataSnapshot ds : dataSnapshot.getChildren()){
                String key = ds.getKey();
                ref.child(key).child("date").removeValue();
              }
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    

    执行查询orderByChild("date").equalTo(date),然后可以迭代并检索key并删除子date