Así que tengo una matriz que contiene reseñas (que recupero de firebase firestore). El campo 'fecha' es una cadena en firestore. ¿Cómo puedo ordenar las reseñas en orden descendente según esta fecha? He intentado esto pero están en el orden de recuperación.
const getReviews=async()=>{ let reviewsClone=[]; const q = query(collection(db, "reviews"), where("product", "==", uniqueProductName.product)); const querySnapshot=await getDocs(q); querySnapshot.forEach((doc)=>{ reviewsClone.push(doc.id); }) reviewsClone.sort(function(a,b){ return new Date(a.date) - new Date(b.date); }); setReviews(reviewsClone); }¿Podrías probar esto? Es probable que esté ordenando una serie de cadenas de revisiones reviewsClone actualmente, todas las cuales tienen .date prop undefined, por lo tanto, .sort no tiene ningún efecto.
const getReviews=async()=>{ let reviewsClone=[]; const q = query(collection(db, "reviews"), where("product", "==", uniqueProductName.product)); const querySnapshot=await getDocs(q); querySnapshot.forEach((doc)=>{ reviewsClone.push(doc); }) reviewsClone.sort(function(a,b){ return new Date(a.date) - new Date(b.date); }); setReviews(reviewsClone.map(c => c.id)); }Suponiendo que todos los datos sean válidos y contengan la clave de fecha. Su función de clasificación es incorrecta. Para ordenar en orden descendente, su función de ordenación debería verse así:
reviewsClone.sort(function(a,b){ return new Date(b.date) - new Date(a.date); });Esta documentación debería ser útil.