Как правильно реализовать queryLog в методах выборки магазина, управляемых покоем? - PullRequest
0 голосов
/ 24 января 2019

Привет, я создаю собственную реализацию 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

...