我正在使用ionic-datepicker(ionic -datepicker)让用户选择时间。我在我的控制器中有这个代码来返回选择的val用户:
$scope.datePickerCallback = function (val) {
if(typeof(val)==='undefined'){
console.log('Date not selected');
}else{
console.log('Selected date is : ', val);
$scope.pickedDate = val;
}
};
然后我尝试将$ task(在task.date之类的属性中包含此val)添加到$ firebaseArray中。我的firebase继续拒绝许可:
FIREBASE WARNING: set at /tasks/-JwIkrTLg5XvrhjLVRTJ failed: permission_denied
我在添加到firebase之前控制台登录。 date属性的输出是:
日期:2015年8月21日星期五00:00:00 GMT-0700(PDT) 原型:无效日期。
那么如何将日期对象保存到Firebase中?我需要为此制定一些规则吗?或者我是否需要使用val来保存它。我需要做的一件事是使用像Firebase.ServerValue.TIMESTAMP这样的val。所以我可以将日期值转换为不同的可读时间格式,进行时间计算和所有类型的东西。我可以将val转换为String并在Firebase中成功保存。但是我将丢失日期对象可以执行的所有功能(例如带有返回值的moment.js)
答案 0 :(得分:3)
Firebase只能存储有效的JSON类型,而JavaScript Date
不是这种类型。
您希望存储日期/时间有两个常见原因:
如果您存储日期的原因是您希望稍后再显示该日期,则您希望将其存储为字符串:
task.date = val.toString();
如果您想存储日期以便以后可以将其与其他日期进行比较(或获取一段时间内的所有任务),那么您将要存储所谓的日期时间戳:
task.timestamp = val.getTime();
JavaScript的Date.getTime()
函数返回自1970年1月1日00:00:00 UTC以来的毫秒数。
如果对两种类型使用不同的属性,则可以存储文本显示值和用于排序的数值。另外,您可以使用以下命令从时间戳重建Date
:
new Date(task.timestamp)