Flutter Firebase数据库时间戳顺序错误

时间:2018-08-12 12:13:03

标签: firebase-realtime-database flutter

我正在尝试将时间戳设置为firebase实时数据库,但是在检索时,不是按时间戳排序。 我真的很喜欢。

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

这是节点

enter image description here

然后我像这样检索。

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

但是输出是这个

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

这些没有按时间戳排序。 我想念什么吗? 否则,这是Firebase错误或抖动吗?

1 个答案:

答案 0 :(得分:4)

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

要维持顺序,您必须使用循环处理.childAdded中的子节点。我根本不是Flutter的专家,但是我无法快速找到一种针对价值事件的方法。因此,您可能想代替听 FirebaseDatabase.instance .reference() .child('path') .orderByChild('timestamp') .onChildAdded .listen((Event event) { print(event.snapshot.value); })

                "ajax": {
                    "url": "/Dechargements/GetList",
                    "type": "GET",
                    "datatype": "json"
                },
                "columns": [
                    { "data": "id_Train" },
                    {
                        data: "date_dechargement",
                        type: "date",
                         render: function (data, type, full) {
                            if (data != null) {
                                var dtStart = new Date(parseInt(data.substr(6)));
                                return dtStart.toLocaleDateString();

                            } else {
                                return "";
                            }
                        }

                    },
                    {
                        data: "debut_de_déchargement",