将 val return 从 ionic-datepicker 保存到 Firebase

Saving the val return from ionic-datepicker into Firebase

我正在使用 ionic-datepicker (ionic -datepicker) 让用户选择时间。我的控制器中有此代码 return val 用户选择:

$scope.datePickerCallback = function (val) {
        if(typeof(val)==='undefined'){      
            console.log('Date not selected');
        }else{
            console.log('Selected date is : ', val);
            $scope.pickedDate = val;
        }
    };

然后我尝试将任务对象 $add(将此 val 包含在其 属性 之一中,例如 task.date)到 $firebaseArray 中。我的 firebase 保持 return 权限被拒绝:

FIREBASE WARNING: set at /tasks/-JwIkrTLg5XvrhjLVRTJ failed: permission_denied 

我在添加到 firebase 之前控制台记录它。日期属性的输出是:

日期:2015 年 8 月 21 日星期五 00:00:00 GMT-0700 (PDT) proto:无效日期。

那么如何将日期对象保存到 Firebase 中呢?我需要为此设置一些规则吗?或者我需要对 val 做些什么来保存它。我需要做的一件事是让 val 像 Firebase.ServerValue.TIMESTAMP。所以我可以将日期值转换成不同的可读时间格式,进行时间计算和各种事情。我可以将 val 转换为 String 并在 Firebase 中成功保存。但是我将失去日期对象可以执行的所有功能(比如 moment.js 和 return 值)

Firebase 只能存储有效的 JSON 类型,而 JavaScript Date 不是这样的类型。

您想要存储 date/time 的常见原因有两个:

  1. 稍后显示
  2. 将其与其他 date/time
  3. 进行比较

如果您存储日期的原因是您希望稍后显示它,您需要将其存储为字符串:

task.date = val.toString();

如果您想存储日期以便稍后将其与其他日期进行比较(或获取某个时间段内的所有任务),您将需要存储所谓的日期时间戳:

task.timestamp = val.getTime();

JavaScript的Date.getTime()函数returns自1970年1月1日以来的毫秒数00:00:00 UTC。

如果您对两种类型使用不同的属性,则可以存储文本显示值和用于排序的数值。或者,您可以使用以下时间戳重建 Date

new Date(task.timestamp)