如何根据 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);
}
我需要我的消息应该根据时间戳排序(“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);
}