使用BookshelfJS格式化计数查询参数

时间:2018-06-27 20:01:22

标签: javascript orm bookshelf.js

我只是跟上BookshelfJS的步伐,所以我可能会遗漏一些东西,但是我想知道如何正确计算查询参数的格式以进行计数。例如,如果我希望我的JS对象使用camelCase,而数据库行使用snake_case,我知道我可以在模型上使用format()parse()函数,例如:http://bookshelfjs.org/#parse-and-format

但是在将它们作为查询在数据库上运行之前,如何获取将计数从驼峰转换为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参数上进行查询。 / p>

这样做可以很好地转换查询参数:

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

它查询author_name而不是authorName上的数据库。但是类似:

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

无法按预期工作,因为它在查询之前没有将authorName转换为author_name。如何使书架使用我为此编写的format()函数?

0 个答案:

没有答案