Estoy creando una aplicación de tareas sencillas con ReactJS y Firebase y quiero ordenar mis tareas pendientes por el momento en que se crearon. Entiendo que necesito usar marcas de tiempo del servidor, pero no puedo encontrar una manera de implementar la clasificación en mi forma de mostrar los datos de Firebase. Así es como busco los datos:
useEffect(() => { const getTodos = async() => { const data = await getDocs(todosRef); setNewTodos(data.docs.map((doc) => ({...doc.data(), id: doc.id}))) } getTodos(); }, [])Y así agrego nuevos todos a la base de datos:
await addDoc(todosRef, { text: input, dueDate: date, comments: [], //timestamp: firebase.firestore.FieldValue.serverTimestamp() }); setInput(''); window.location.reload(); }Además, cuando trato de agregar la nueva tarea pendiente con la marca de tiempo, no sucede nada. No lo enviará a la base de datos, por eso está comentado.
Para serverTimestamp, puede importarlo directamente en modular v9.
importar { addDoc, serverTimestamp } desde "firebase/firestore";
await addDoc(todosRef, { timestamp: serverTimestamp() })En cuanto a la clasificación por marca de tiempo, simplemente puede generar una consulta y ordenar por marca de tiempo descendente.
const q = query(todosRef, orderBy("timestamp", "desc"); const data = await getDocs(q);