Knex.js&MySQL:将整型转换为布尔值以进行批量select

我使用Knex作为与MySQL数据库通信的服务器。

我有select语句,可能会从数据库中返回大量的logging。 这些logging中的一些单元是布尔型的,这实际上意味着它们只是整数(0或1)。 在JavaScript中,我需要它们作为布尔值,所以我可以把它们作为实际的“真”或“假”值,而不是“0”和“1”。 到目前为止,我发现的唯一解决scheme是通过循环将每个tinyintlogging更改为布尔值来运行查询的结果。 但是,我想知道,有没有办法将查询生成器configuration为自动返回某些单元格的布尔值?

好。 经过多番search,我在这里find了答案:

https://github.com/tgriesser/knex/issues/1240

诀窍是configurationKnex使用typeCast属性的带下划线的mysql驱动程序:

var db = require('knex')({ client: 'mysql', connection: { host: 'localhost', user: 'mysql', password: 'mysql', database: 'mysql', typeCast: function(field, next) { if (field.type == 'TINY' && field.length == 1) { return (field.string() == '1'); // 1 = true, 0 = false } return next(); } } }); db('my_table') .select() .then((rows) => { //Each row's boolean field is now true/false instead of 1/0 });