“ n”天后如何删除Firebase数据

我想从Firebase中删除一些旧数据,但我很难使它工作。


我尝试了以下解决方案:Firebase聊天-删除旧消息


但这并不被弃用。


所以我这样尝试:


ChildEventListener childEventListener = new ChildEventListener() {

    @Override

    public void onChildAdded(DataSnapshot dataSnapshot, String s) {


        Calendar calendar = Calendar.getInstance();

        calendar.add(Calendar.DAY_OF_MONTH, -30);


        Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());


        String key = dataSnapshot.getKey();


        Marker retrievemarker =dataSnapshot.getValue(Marker.class);

        Calendar t3 = new           

        GregorianCalendar

        (c.get(Calendar.YEAR),

         c.get(Calendar.MONTH),

         retrievemarker.getSavedate());


        int date1= calendar.get(Calendar.DATE);

        int date2= t3.get(Calendar.DATE);


        Log.d("date1",""+date1);

        Log.d("date2",""+date2);


        if( date1 == date2 ){


            myRef.child(key).setValue(null);


        }

作为说明:在Firebase中,我保存了一个名为Marker的对象,该对象有一个变量来存储保存的内容,即该对象在Firebase中的保存日期。


int date = c.get(Calendar.DATE);

marker.setSavedate(date);

我想在30天后删除Firebase中的对象。因此,我尝试从“今天的日期”中减去30天,而不是将其与“对象”中的“保存对象”进行比较(如果等于),我将从Firebase中删除该对象。


对于减法,我指的是以下问题的答案:如何使用Java日历从日期中减去X天?


但这是行不通的。如果我今天将一个对象添加到Firebase,则两个日期始终相等。所以我想减法不起作用。


我究竟做错了什么?


慕后森
浏览 395回答 2
2回答

翻阅古今

假设您有一个带有节点行的数据结构:-KItqNxLqzQoLnUCb9sJaddclose  time: "Thu Apr 28 17:12:05 PDT 2016"  timestamp: 1461888725444每个此类节点都有一个timestamp指示其创建时间的属性。最好使用Server Timestamp设置此属性。使用此数据结构,您可以轻松构建一个查询,该查询仅返回30天以上的项目并将其删除:long cutoff = new Date().getTime() - TimeUnit.MILLISECONDS.convert(30, TimeUnit.DAYS);Query oldItems = ttlRef.orderByChild("timestamp").endAt(cutoff);oldItems.addListenerForSingleValueEvent(new ValueEventListener() {    @Override    public void onDataChange(DataSnapshot snapshot) {        for (DataSnapshot itemSnapshot: snapshot.getChildren()) {            itemSnapshot.getRef().removeValue();        }    }    @Override    public void onCancelled(DatabaseError databaseError) {        throw databaseError.toException();    }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Android