【问题标题】:Flutter Firebase Database wrong timestamp orderFlutter Firebase 数据库错误的时间戳顺序
【发布时间】:2019-01-19 09:07:55
【问题描述】:

我正在尝试将时间戳设置到 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-database flutter


    【解决方案1】:

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

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

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

    【讨论】:

    • 抱歉回复晚了。它工作得很好!如果我使用DateTime.now().millisecondsSinceEpoch,它也会起作用吗?类型是 int 但文档显示自 1970 年以来的毫秒数。所以我猜它有效,但我只是想确定一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2021-11-27
    • 2019-12-20
    • 2021-02-06
    • 1970-01-01
    相关资源
    最近更新 更多