如何使用Firestore在快照上订购ByValue

Kar*_*lor 2 javascript firebase reactjs google-cloud-firestore

componentWillMount我正在注册一个onSnapshot函数来更新状态。

componentWillMount () {
    todoRef.onSnapshot((doc) => {
      let todos = []
      doc.forEach(doc => {todos.push(doc.data())})
      this.setState({
        todos
      })
    })
  }
Run Code Online (Sandbox Code Playgroud)

但是,firebase / firestore的工作方式是仅按随机键,因此当我取回数据时,其顺序不正确。

我知道有一个.orderByValue()函数,但是我尝试实现它,但似乎无法弄清楚。

Kar*_*lor 5

我的裁判是 const todoRef = db.collection("todos");

因此,一旦获得对集合的引用,就可以进行排序查询。

todoRef.orderBy('createdAt').onSnapshot((docSnapShot) => {
  let todos = []
  docSnapShot.forEach(doc => {todos.push(doc.data())})
  this.setState({
    todos
  })
})
Run Code Online (Sandbox Code Playgroud)


Aja*_*mar 5

  const [todos, setTodos] = useState([]);

  useEffect(() => {
    db.collection('todo_collection')
      .orderBy('dateTime')
      .onSnapshot((snapshots) => {
        setTodos(snapshots.docs.map((doc) => doc.data()));
      });
  }, []);
Run Code Online (Sandbox Code Playgroud)