Cómo eliminar datos de firebase después de "n" días

Quiero borrar algunos datos antiguos de mi Friebase. Sabía que esta pregunta se hacía mucho aquí, pero todavía me cuesta trabajo hacerla funcionar.

Intento esta solución encontrada aquí:

Chat de Firebase: eliminar mensajes antiguos

pero esto es desaprobado.

así que lo intento de esta manera:

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); } 

para explicación: En mi Firebase salvo un objeto llamado Marker, este objeto obtuvo una variable para almacenar el salvado, la fecha en que el objeto fue guardado en Firebase.

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

Quiero eliminar el objeto en Firebase después de 30 días. Así que trato de restar 30 días a partir de la fecha de hoy de lo que quiero comparar esto con el salvado del objeto si es igual a que se eliminará el objeto de la base de Firebase.

Para la Sustracción me refiero a la siguiente respuesta:

Cómo restar X días de una fecha con el calendario de Java?

Pero no funciona. Si añado un Objeto hoy a la Firebase las dos fechas son siempre iguales. Así que supongo que la substracción no funciona.

¿Qué estoy haciendo mal?

Digamos que tiene una estructura de datos con nodos alineados con esto:

 -KItqNxLqzQoLnUCb9sJaddclose time: "Thu Apr 28 17:12:05 PDT 2016" timestamp: 1461888725444 

Cada uno de estos nodos tiene una propiedad timestamp que indica cuándo se creó. De preferencia, establecería esta propiedad utilizando la marca de hora del servidor .

Con esta estructura de datos, puede crear fácilmente una consulta que sólo devuelve los elementos mayores de 30 días y los elimina:

 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) { } }); 

Mi estructura de Firebase es como -> firebaseurl.com/test/user_id/2017-05-12 y luego mis datos están estructurados con el tiempo Así que estoy usando

 long cutoff = new Date().getTime()-TimeUnit.MILLISECONDS.convert(10, TimeUnit.DAYS); //Get days number for delete data 

Fecha d = nueva Fecha (corte); SimpleDateFormat dateFormatGmt = nuevo SimpleDateFormat ("aaaa-MM-dd"); Cadena old_date = `dateFormatGmt.format (nueva fecha (corte)); // Obtener la fecha de borrado del contenido ref2 = new Firebase ("firebaseurl.com/test/user_id/" + user_id); // URL de Firebase ref2.child (old_date) .removeValue (); // Eliminar elemento

Esto funciona para mi

  • Cómo crear un proyecto de biblioteca de android en android?
  • Error de compilación del administrador de ubicación de Android
  • ¿Limpiar automáticamente LogCat en cada depuración / ejecución de Eclipse?
  • Org.w3c.dom.Document a String sin javax.xml.transform
  • Android: Proceso nativo provoca el desbordamiento de ReferenceTable después de un tiempo (android-ndk)
  • Añadir biblioteca externa en Android studio 0.3.6
  • Print Todo el registro de solicitud se llama desde la biblioteca volley
  • ¿Cuál es la mejor manera de compartir datos entre actividades?
  • Utilizar sabores en el estudio de Android y - error con AndroidManifest incorrecto seleccionado / no fusionado
  • Retrato para teléfono, paisaje para Tablet (Android-Layout)
  • GlCreateShader y glCreateProgram fallan en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.