Форматирование параметров запроса счетчика с помощью BookshelfJS - PullRequest
0 голосов
/ 27 июня 2018

Я только начинаю работать с BookshelfJS, так что я, вероятно, что-то упускаю, но мне интересно, как получить параметры запроса для правильного форматирования для подсчета. Например, если я хочу, чтобы мои объекты JS использовали camelCase, а строки базы данных использовали snake_case, я знаю, что могу использовать функции format() и parse() в модели следующим образом: http://bookshelfjs.org/#parse-and-format

Но как мне получить параметры запроса для счетчика, который будет преобразован из camelCase в snake_case, прежде чем они будут выполнены как запросы к БД?

Пример:

const Book = bookshelf.Model.extend({
    tableName: 'books',
    parse: function(response) {
        return _.mapKeys(response, function(value, key) {
            return _.camelCase(key);
        });
    },
    format: function(attributes) {
        return _.mapKeys(attributes, function(value, key) {
            return _.snakeCase(key);
        });
    }
});

Теперь предположим, что таблица базы данных books имеет author_name в качестве столбца, но, если она используется в API, мы хотим, чтобы пользователи запрашивали параметр authorName.

Выполнение этого преобразует параметры запроса просто отлично:

Book.forge({authorName: 'Clark'}).fetch()

И он запрашивает БД на author_name вместо authorName. Но аналог:

Book.forge({authorName: 'Clark'}).count()

не работает должным образом, потому что он не конвертирует authorName в author_name перед запросом. Как заставить книжную полку использовать функцию format(), которую я написал для этого?

...