Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在firebase实时数据库中按时间戳对数据进行排序_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 在firebase实时数据库中按时间戳对数据进行排序

Javascript 在firebase实时数据库中按时间戳对数据进行排序,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我已将数据存储在firebase实时数据库中,如下所示: { "orders" : [ null, { "res_name" : "order test", "res_phone" : "1234567890", "timestamp" : 1585123988381 }, { "res_name" : "tesst restaurant", "res_phone" : "987654321", "timestamp" : 15851240

我已将数据存储在firebase实时数据库中,如下所示:

{
  "orders" : [ null, {
    "res_name" : "order test",
    "res_phone" : "1234567890",
    "timestamp" : 1585123988381
  }, {
    "res_name" : "tesst restaurant",
    "res_phone" : "987654321",
    "timestamp" : 1585124001850
  }, {
    "res_name" : "ppp",
    "res_phone" : "9856847758",
    "timestamp" : 1585124624718
  } ]
}
现在我想按时间戳值降序对数据进行排序。怎样才能做到呢

我在下面对数据进行排序,但它不起作用

firebase.database().ref('orders').orderByChild('timestamp').on('value', function(snapshot) {
    var value = snapshot.val();
    var htmls = [];
    $.each(value, function(index, value){

      if(value){

         htmls.push('<tr><td>'+ value.res_name +'</td><td>'+ value.res_phone +'</td><td>'+ value.timestamp +'</td></tr>')
      lastIndex = index;
    });
    $('#tblId').html(htmls);

firebase.database().ref('orders').orderByChild('timestamp').on('value',函数(快照){
var value=snapshot.val();
var htmls=[];
$.each(值、函数(索引、值){
如果(值){
htmls.push(“”+value.res\u name+“”+value.res\u phone+“”+value.timestamp+“”)
lastIndex=指数;
});
$('#tblId').html(htmls);

在查询中使用
orderByChild('timestamp')
时,Firebase会按照您请求的顺序返回您请求的子节点。每个子节点有三条信息:

  • 这是关键
  • 它的价值
  • 它相对于其他子节点的顺序
但是,当您随后调用
snapshot.val()
时,它必须将该信息转换为JSON,而JSON只有键和值的位置。因此,在这一点上,有关顺序的信息将被删除

要按照您请求的顺序处理子项,请使用
snapshot.forEach()

firebase.database().ref('orders').orderByChild('timestamp').on('value',函数(快照){
var value=snapshot.val();
var htmls=[];
snapshot.forEach(函数(子函数){
让value=child.val();
htmls.push(“”+value.res\u name+“”+value.res\u phone+“”+value.timestamp+“”)
});
$('#tblId').html(htmls);
});

在查询中使用
orderByChild('timestamp')
时,Firebase会按照您请求的顺序返回您请求的子节点。每个子节点有三条信息:

  • 这是关键
  • 它的价值
  • 它相对于其他子节点的顺序
但是,当您随后调用
snapshot.val()
时,它必须将该信息转换为JSON,而JSON只有键和值的位置。因此,在这一点上,有关顺序的信息将被删除

要按照您请求的顺序处理子项,请使用
snapshot.forEach()

firebase.database().ref('orders').orderByChild('timestamp').on('value',函数(快照){
var value=snapshot.val();
var htmls=[];
snapshot.forEach(函数(子函数){
让value=child.val();
htmls.push(“”+value.res\u name+“”+value.res\u phone+“”+value.timestamp+“”)
});
$('#tblId').html(htmls);
});

到目前为止您发布的代码看起来不错。它有什么问题吗?提示:问题可能在于您如何处理
快照中的数据,因此您希望发布该代码。显示问题的最简单方法是保持处理过程不变,然后
控制台.log
解决问题,而不是构建/更新UI.更新了我的问题…现在可以了吗?@Frankvanpuffelen您发布的代码看起来很好。有什么问题吗?提示:问题可能在于您如何处理
快照中的数据,因此您希望发布该代码。显示问题的最简单方法是保持处理过程不变,但随后是
控制台.log
问题是,没有构建/更新UI。更新了我的问题…现在可以了吗?@FrankvanPuffelen
firebase.database().ref('orders').orderByChild('timestamp').on('value', function(snapshot) {
    var value = snapshot.val();
    var htmls = [];
    snapshot.forEach(function(child) {
        let value = child.val();
        htmls.push('<tr><td>'+ value.res_name +'</td><td>'+ value.res_phone +'</td><td>'+ value.timestamp +'</td></tr>')
    });
    $('#tblId').html(htmls);
});