Как удалить дочерний узел после определенной даты в базе данных firebase? - PullRequest
0 голосов
/ 20 октября 2018

необходимо удалить дочерний элемент (пост-ключ), если значение (дата) <текущее время дата </p>

Вот так выглядит моя база данных: database

 Calendar calFordDate;
        calFordDate = Calendar.getInstance();
        SimpleDateFormat currentDate = new SimpleDateFormat("dd/MM/yyyy");
        String CurrentDate = currentDate.format(calFordDate.getTime());
        PostsRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String tripdate = dataSnapshot.child(postkey).child("date").getValue().toString();
                if(CurrentDate.after(tripdate)) {

                    dataSnapshot.getRef().removeValue();
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

я использовал этот код и не удалял старый дочерний узел, когда он достиг текущей даты (CurrentDate)

       Calendar calFordDate;
       calFordDate = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        String CurrentDate = format.format(calFordDate.getTime());

        DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
        Query delQuery = ref.child("Posts").orderByChild("date").equalTo(CurrentDate);


        delQuery.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot dSnapshot: dataSnapshot.getChildren()) {
                    dSnapshot.getRef().removeValue();
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.e(TAG, "onCancelled", databaseError.toException());
            }
        });
0 голосов
/ 20 октября 2018

Ошибка в вашем ответе связана с тем, что tripdate является строкой, а не Date объектом.Чтобы преобразовать строку в дату, вы можете использовать код, который выглядит следующим образом:

String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {
    e.printStackTrace();  
}

Также для удаления дочернего элемента из базы данных Firebase, когда вы не знаете значение, это должно быть сделано с помощью кода, подобного этому:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query delQuery = ref.child("Posts").orderByChild("date").equalTo(DateYouKnowIsThere);

delQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot dSnapshot: dataSnapshot.getChildren()) {
            dSnapshot.getRef().removeValue();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.e(TAG, "onCancelled", databaseError.toException());
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...