如何根据 firebase 时间戳对我的对象数组进行排序

How to sort my array of objects based on firebase Timestamp

我需要我的消息应该根据时间戳排序(“createdAt”是归档的名称)我可以在早期版本的 firebase 中做到这一点,但不知道如何在 firebase v9 中做到这一点

FIRESTORE 上的数据结构

const [messages, setMessages] = useState([])
    useEffect(() => {

        const unsub = onSnapshot(doc(db, "messages", state.id), (snapshot) => {
            if(snapshot.data()){
                console.log(123,Object.values(snapshot.data()))
                setMessages(Object.values(snapshot.data()))
            }
        });
    }, [])

您文档中的不是数组。它们只是具有随机 ID 的字段。您可以使用 .sort() 对它们进行排序,如下所示:

if (snapshot.data()) {
  const sortedMessages = Object.values(snapshot.data()).sort((a, b) => a.createdAt.toMillis() - b.createdAt.toMillis())

  setMessages(sortedMessages);
}