首页 > 解决方案 > Flutter Firebase 数据库错误的时间戳顺序

问题描述

我正在尝试将时间戳设置到firebase实时数据库中,但是当我检索时,不是按时间戳排序。我确实喜欢这样。

FirebaseDatabase.instance.reference().child('path').push().set({
      'timestamp': ServerValue.timestamp
    });

这是节点

在此处输入图像描述

然后我像这样检索。

FirebaseDatabase.instance.reference().child('path').orderByChild('timestamp').once().then((snap) {
            print(snap.value);
          });

但输出是这样的

{-LJhyfmrWVDD2ZgJdfMR: {timestamp: 1534074731794}, -LJhyWVi6LddGwVye48K: {timestamp: 1534074689667}, -LJhzDlvEMunxBpRmTkI: {timestamp: 1534074875091}

这些不是按时间戳排序的。我错过了什么吗?否则这是firebase错误还是颤振?

标签: firebase-realtime-databaseflutter

解决方案


数据以正确的顺序检索到DataSnapshot. 但是当您snap.value从快照中调用信息时,必须将其转换为 a Map<String, Object>,它不再可以保存有关子节点顺序的信息。

要保持顺序,您必须DataSnapshot使用循环处理子节点。我(根本)不是 Flutter 方面的专家,但我无法快速找到一种方法来为价值事件执行此操作。所以你可能想改为听.childAdded

   FirebaseDatabase.instance
        .reference()
        .child('path')
        .orderByChild('timestamp')
        .onChildAdded
        .listen((Event event) {
      print(event.snapshot.value);
    })

推荐阅读