Итак, у меня просто был большой «Oh Snap!». момент.Querying MomentJS даты на IndexedDB & AngularJS - Даты против строк
Я использую MomentJS с AngularJS и IndexedDB в автономном приложении.
Все мои записи хранятся с индексом date_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);
});
});
};
Запрос поставлял странные результаты, иногда правильные, иногда нет. До тех пор, пока я не понял, что на самом деле я запрашиваю строки, а не даты. Будучи таким, запрос между 01/08/2016 и 31/08/2016, по-прежнему доставит мне результаты, содержащие 20/09/2016, потому что в качестве номера это действительно между диапазоном.
Я чувствую, что у меня отсутствует что-то структурное.
Любые комментарии о том, как решить эту проблему?
Должен ли я запрашивать какой-либо другой индекс? Но как я могу сравнить даты?
даты хранения как строки ISO или временные метки – charlietfl