Javascript 在IndexedDB&;上查询MomentJS日期;AngularJS-日期与字符串
所以,我刚刚经历了一个“哦,突然”的时刻 我在离线应用程序中使用MomentJS与AngularJS和IndexedDB 所有我的记录都存储在基于对象日期属性的索引Javascript 在IndexedDB&;上查询MomentJS日期;AngularJS-日期与字符串,javascript,angularjs,date,momentjs,indexeddb,Javascript,Angularjs,Date,Momentjs,Indexeddb,所以,我刚刚经历了一个“哦,突然”的时刻 我在离线应用程序中使用MomentJS与AngularJS和IndexedDB 所有我的记录都存储在基于对象日期属性的索引date\u idx中 当我尝试使用以下代码基于日期运行查询时,会出现问题: $scope.redoresults = function(){ $indexedDB.openStore('records', function(store){ $scope.upper = moment($scope.dates.endDa
date\u idx
中
当我尝试使用以下代码基于日期运行查询时,会出现问题:
$scope.redoresults = function(){
$indexedDB.openStore('records', function(store){
$scope.upper = moment($scope.dates.endDate).format("DD[/]MM[/]YYYY");
$scope.downer = moment($scope.dates.startDate).format("DD[/]MM[/]YYYY");
var find = store.query();
find = find.$between($scope.downer, $scope.upper, false, false);
find = find.$index("date_idx");
store.eachWhere(find).then(function(e){
$scope.daterange = e;
console.log($scope.daterange);
});
});
};
这个查询提供了奇怪的结果,有时正确,有时不正确。
直到我意识到我实际上是在查询字符串,而不是日期。
因此,2016年8月1日至2016年8月31日之间的查询仍将向我提供包含2016年9月20日的结果,因为作为一个数字,它确实介于范围之间
我觉得我错过了一些结构方面的东西
对如何解决这个问题有何评论
我应该查询其他索引吗?但是我如何比较日期呢?- 将日期存储为日期,并使用日期进行查询
- 或者,将日期存储为时间戳(例如date.getTime()),然后使用时间戳进行查询
- 不要将日期存储为日期,然后使用字符串日期进行查询,这将产生垃圾邮件
- 不要将日期存储为字符串,然后使用字符串日期进行查询,这将产生垃圾。字符串值按字典进行比较,这很容易与日期的比较方式不同
- 将日期存储为日期,并使用日期进行查询
- 或者,将日期存储为时间戳(例如date.getTime()),然后使用时间戳进行查询
- 不要将日期存储为日期,然后使用字符串日期进行查询,这将产生垃圾邮件
- 不要将日期存储为字符串,然后使用字符串日期进行查询,这将产生垃圾。字符串值按字典进行比较,这很容易与日期的比较方式不同