在Firebase中存储日期

时间:2018-02-18 18:24:53

标签: javascript firebase ionic-framework

我正在使用Ionic做一个应用程序,我需要在我的火力库中存储日期。但它失灵了,我尝试了orderByChild()等方法;但没有落后工作。

我需要我的firebase这样存储:

  • 2018年3月1日
  • 2018年3月5日
  • 2018年3月10日

相反,它保持这样:

  • 2018年3月1日
  • 2018年3月10日
  • 2018年3月5日

无论如何我能按顺序得到它吗?

这是我约会的地方:

function getCurrentDate(){
    var today = new Date();
    console.log(today.getMonth());
    var dd = today.getDate();
    var mm = today.getMonth(); //January is 0!
    var month = new Array();
    month[0] = "Jan";
    month[1] = "Fev";
    month[2] = "Mar";
    month[3] = "Abr";
    month[4] = "Mai";
    month[5] = "Jun";
    month[6] = "Jul";
    month[7] = "Ago";
    month[8] = "Set";
    month[9] = "Out";
    month[10] = "Nov";
    month[11] = "Dez";
    var yyyy = today.getFullYear();

    var currentDate = dd+" "+month[mm]+' '+yyyy;

    return currentDate;
}

这是我进入firebase的地方:

function AddServico(date,finalValue,id){
  var deffered = $q.defer();
  var ref = fb.child('/Barbeiro/'+id+'/Dia/'+date+'/');
  ref.once("value")
      .then(function(snapshot) {
          ref.push().set({'finalValue':finalValue});
          deffered.resolve(snapshot);
        });
      ionicToast.show('Adicionado', 'middle', false, 1500);
  return deffered.promise;
}

这是我从firebase阅读的地方:

function GetDias(id){
    var query = fb.child('Barbeiro/'+id+'/Dia/');
    return $firebaseArray(query).$loaded();
}

以下是我的火力基地如何保留它:

enter image description here

以下是我的应用显示的方式:

enter image description here

1 个答案:

答案 0 :(得分:1)

您将日期存储为字符串,不建议这样做。字符串在lexicographical order中排序,这意味着在执行排序时将各个字符相互比较。这与您在字典中对单词进行排序的方式相同。

所以,对于这两个字符串:

  • 2018年3月10日
  • 2018年3月5日

第一个字符串是"小于"第二,因为字符的ascii值" 1"小于" 5"。

如果你想在数据库中存储日期,我建议使用数字表示而不是字符串,通常是自unix时期以来的毫秒数。这些数字自然会按照你想要的方式按时间顺序排列。