Reactjs 在react firebase挂钩/数据库上对数据进行排序
因此,在React中,我正在使用Reactjs 在react firebase挂钩/数据库上对数据进行排序,reactjs,firebase,firebase-realtime-database,react-hooks,Reactjs,Firebase,Firebase Realtime Database,React Hooks,因此,在React中,我正在使用“React firebase hooks/database”包读取firebase实时数据库 import { useList } from "react-firebase-hooks/database"; import { db, auth } from "../../firebase"; function GameHistory() { var dbRef = db.ref("/" + use
“React firebase hooks/database”
包读取firebase实时数据库
import { useList } from "react-firebase-hooks/database";
import { db, auth } from "../../firebase";
function GameHistory() {
var dbRef = db.ref("/" + user.uid);
const [snapshots, loading, error] = useList(dbRef);
所以快照变量基本上包含所有firebase实时数据库数据。
然后,在我的代码后面,我只是将快照数组的每个元素映射到一个组件中
问题是,我想按照数据中的.timestamp
firebase属性的顺序对快照数据进行排序。我不知道该怎么做
我尝试在映射快照数据时对其进行排序:
snapshots
.sort((a, b) => {
return a.val().timestamp > b.val().timestamp;
})
.map((game, index) => (MORE CODE
但这不起作用,因为timestamp是firebase对象,JavaScript不知道如何处理它
为了在timestamp变量上建立更多上下文,我将其定义为:
timestamp:firebase.firestore.FieldValue.serverTimestamp()
那么,有没有办法对快照数据进行排序?或者我应该使用另一个软件包?如果我应该使用其他内容,请显示如何读取和排序实时数据库的代码。您在这里混淆了两个不同的数据库:
- “react firebase hooks/database”中的
导入{useList}和其他代码用于实时数据库
用于云firestore时间戳:firebase.firestore.FieldValue.serverTimestamp()
timestamp: firebase.database.ServerValue.TIMESTAMP
实际上,我还让数据库服务器处理排序,而不是在代码中进行排序,这是通过以下方式完成的:
var dbRef = db.ref("/" + user.uid);
const dbQuery = dbRef.orderByChild("timestamp");
const [snapshots, loading, error] = useList(dbQuery);
...
非常感谢。我更新了时间戳。另外,当我运行代码时,它说
this.Ref.orderBy不是一个函数
,我在谷歌上搜索了一下,但是.orderByChild
也做了同样的事情吗?如果我想按降序排序,我会怎么做?我尝试了.orderBy(“timestamp”,“desc”)
,但没有成功。你建议我在JS中本地反转数组吗?哦,orderBy是一个输入错误,应该是orderByChild。Firebase中没有降序排序,请参阅