Я только начинаю работать с 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()
, которую я написал для этого?