如何使用 Firestore 在快照上按值排序
How to orderByValue onSnapshot using Firestore
在 componentWillMount
中,我正在注册一个更新状态的 onSnapshot 函数。
componentWillMount () {
todoRef.onSnapshot((doc) => {
let todos = []
doc.forEach(doc => {todos.push(doc.data())})
this.setState({
todos
})
})
}
但是,firebase/firestore 的工作方式是它只是推送随机密钥,所以当我取回数据时,它的顺序不正确。
我知道有一个 .orderByValue()
函数,但我已经尝试实现它但似乎无法理解。
我的推荐人是 const todoRef = db.collection("todos");
因此,一旦获得对 collection 的引用,就可以进行排序查询。
todoRef.orderBy('createdAt').onSnapshot((docSnapShot) => {
let todos = []
docSnapShot.forEach(doc => {todos.push(doc.data())})
this.setState({
todos
})
})
const [todos, setTodos] = useState([]);
useEffect(() => {
db.collection('todo_collection')
.orderBy('dateTime')
.onSnapshot((snapshots) => {
setTodos(snapshots.docs.map((doc) => doc.data()));
});
}, []);
在 componentWillMount
中,我正在注册一个更新状态的 onSnapshot 函数。
componentWillMount () {
todoRef.onSnapshot((doc) => {
let todos = []
doc.forEach(doc => {todos.push(doc.data())})
this.setState({
todos
})
})
}
但是,firebase/firestore 的工作方式是它只是推送随机密钥,所以当我取回数据时,它的顺序不正确。
我知道有一个 .orderByValue()
函数,但我已经尝试实现它但似乎无法理解。
我的推荐人是 const todoRef = db.collection("todos");
因此,一旦获得对 collection 的引用,就可以进行排序查询。
todoRef.orderBy('createdAt').onSnapshot((docSnapShot) => {
let todos = []
docSnapShot.forEach(doc => {todos.push(doc.data())})
this.setState({
todos
})
})
const [todos, setTodos] = useState([]);
useEffect(() => {
db.collection('todo_collection')
.orderBy('dateTime')
.onSnapshot((snapshots) => {
setTodos(snapshots.docs.map((doc) => doc.data()));
});
}, []);