【问题标题】:Firebase Realtime Database: failed to order data by timestampFirebase 实时数据库:未能按时间戳对数据进行排序
【发布时间】:2021-03-16 02:08:01
【问题描述】:

我有一个数据库列表包含10000多条记录,每条记录都有Email和Date键,Date是一个时间戳。

使用orderByChild 无序检索数据对数据进行排序。代码sn-p:

firebase.database().ref('users').orderByChild('Date').once('value').then((d)=>{
  let users = d.val();
  Object.keys(users).map( 
    k => console.log( new Date(users[k].Date) )
  );
});

记录:

{
  "users" : {
    "-MNfAJqQps-t3tPexBXD" : {
      "Date" : 1587827466215
    },
    "-MNfAO1PbkcLOqjjrk2o" : {
      "Date" : 1593781601194
    },
    "-MNfAcnfCZ7bpEGO9lMX" : {
      "Date" : 1588037833767
    },
    "-MNfAcnfCZ7bpEGO9lMY" : {
      "Date" : 1590966701420
    },
    "-MNfAcngMq0yQfq-zJD7" : {
      "Date" : 1574637809000
    },
    "-MNfAcngMq0yQfq-zJD8" : {
      "Date" : 1565127290858
    },
    "-MNfAcnhU0gK2PfDRYdU" : {
      "Date" : 1566914768371
    },
    "-MNfAcnhU0gK2PfDRYdV" : {
      "Date" : 1580480141148
    },
    "-MNfAcnirZFlPnikmjA9" : {
      "Date" : 1604432784043
    },
    "-MNfAcnirZFlPnikmjAA" : {
      "Date" : 1563010563269
    }
  }
}

规则:

{
  "rules": {
    ".read": "true",
    ".write": "false",
    "users": {
      ".indexOn": "Date"
    }
  }
}

结果:

4/25/2020, 5:11:06 PM
7/3/2020, 3:06:41 PM
4/28/2020, 3:37:13 AM
6/1/2020, 1:11:41 AM
11/25/2019, 1:23:29 AM
8/6/2019, 11:34:50 PM
8/27/2019, 4:06:08 PM
1/31/2020, 4:15:41 PM
11/3/2020, 9:46:24 PM
7/13/2019, 11:36:03 AM

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-security


    【解决方案1】:

    一旦调用 d.val(),子节点的顺序就会丢失。 所以你应该在d.val()之前使用forEach循环d。

    firebase.database().ref('users').orderByChild('Date').once('value', d=> {
      d.forEach(child => {
        const child_data = child.val();
        const date = child_data.Date;
        console.log(new Date(date));
      })
    })
    

    【讨论】:

    • 感谢您的检查。如果你介意也请点赞。谢谢。如果您对 firebase 有任何疑问,我会为您提供更多帮助
    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多