我只是跟上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()
函数?