Привет, я создаю собственную реализацию restStore из фреймворка dstore. Я пытаюсь понять, как использовать методы queryLog и Querier в остальных магазинах.
В памяти хранится довольно просто. Итерация по массиву queryLog и применение фильтра и сортировка по набору данных. Мой случай фильтрации и сортировки на стороне сервера. Все, что мне нужно, это передать запрос на фильтр и сортировать в сервис.
Я реализовал методы fetch и fetchRange в соответствии с руководством dstore. В этих методах я анализирую массив queryLog для фильтрации, сортирую и передаю его на сервер. Что предполагается делать с массивом queryLog? Удалить проанализированные запросы из массива?
fetchRange: function(kwArgs) {
var self = this;
var sortOpt = array.map(
array.filter(this.queryLog || [], function(item) {
return item.type === "sort"
}) || [], function(item) {
self.destroyUsedQueryLog(item);
return {
attribute: item.arguments[0][0].property || item.arguments[0][0].attribute,
property: item.arguments[0][0].property || item.arguments[0][0].attribute,
order: item.arguments[0][0].descending ? "DESC" : "ASC"
}
});
var queryOpt = array.map(
array.filter(this.queryLog || [], function(item) {
return item.type === "filter"
}) || [], function(item) {
self.destroyUsedQueryLog(item);
return item.arguments[0]
});
var options = {
sort: sortOpt,
start: kwArgs.start,
count: kwArgs.end - kwArgs.start
}
return this.query(queryOpt[queryOpt.length - 1] || {}, options);
},
Функция destroyUsedQueryLog () удаляет проанализированный запрос из массива queryLog.
Функция query () принимает фильтр запроса и сортирует запрос и вызывает остальную службу, возвращает QueryResults