将 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 的常见原因有两个:
- 稍后显示
- 将其与其他 date/time
进行比较
如果您存储日期的原因是您希望稍后显示它,您需要将其存储为字符串:
task.date = val.toString();
如果您想存储日期以便稍后将其与其他日期进行比较(或获取某个时间段内的所有任务),您将需要存储所谓的日期时间戳:
task.timestamp = val.getTime();
JavaScript的Date.getTime()
函数returns自1970年1月1日以来的毫秒数00:00:00 UTC。
如果您对两种类型使用不同的属性,则可以存储文本显示值和用于排序的数值。或者,您可以使用以下时间戳重建 Date
:
new Date(task.timestamp)
我正在使用 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 的常见原因有两个:
- 稍后显示
- 将其与其他 date/time 进行比较
如果您存储日期的原因是您希望稍后显示它,您需要将其存储为字符串:
task.date = val.toString();
如果您想存储日期以便稍后将其与其他日期进行比较(或获取某个时间段内的所有任务),您将需要存储所谓的日期时间戳:
task.timestamp = val.getTime();
JavaScript的Date.getTime()
函数returns自1970年1月1日以来的毫秒数00:00:00 UTC。
如果您对两种类型使用不同的属性,则可以存储文本显示值和用于排序的数值。或者,您可以使用以下时间戳重建 Date
:
new Date(task.timestamp)