Quiero que todos los datos enviados en último lugar se clasifiquen como el último documento de Mongo en mi colección de Firebase. En cualquier caso, los últimos datos enviados se almacenarán como el último documento de la colección. Utilicé la ordenación por fechas y hora actual, pero no es efectiva para todas las fechas. (por ejemplo, la fecha 2.6 se pone primero en lugar de 19.6)
Esta es mi función:
Reservations(){ this.user = store.currentUser this.empty_form=false; if(this.current_museum!=''&&this.date!=''&&this.ticket_number!=''&&this.user!='') { //Date I used for sorting const current = new Date(); const date = current.getFullYear()+'-'+(current.getMonth()+1)+'-'+current.getDate(); const time = current.getHours() + ":" + current.getMinutes() + ":" + current.getSeconds(); const dateTime = date +' '+ time; let counter = counter + 1; router.replace({path:'/ticket_reserved', replace: true}) try { db.collection("reservations") .doc(dateTime) .set({ current_museum: this.current_museum, date: this.date, ticket_number: this.ticket_number, user: this.user }); } catch(error) { } }else{ this.empty_form=true; }},Utilicé la ordenación por fechas y hora actual, pero no es efectiva para todas las fechas. (por ejemplo, la fecha 2.6 se pone primero en lugar de 19.6)
Este es un problema clásico con la clasificación de fechas. Una solución común es almacenar los datos en el siguiente formato: YYYYMMDD (por ejemplo, 20220602 y 20220619). De esta forma el ordenamiento lexicográfico es correcto.
Puede muy bien duplicar el campo de fecha en su documento de Firestore: un campo de date con la fecha en el formato de fecha deseado (lo más probable es que sea del tipo Timestamp) y otro campo, por ejemplo, dateSorting , usando el formato AAAAMMDD y del tipo String. Utilice el segundo campo para construir su consulta.
Tenga en cuenta que también funciona para el formato de fecha/hora, por ejemplo, YYYYMMDD-HHMMSS .