javascript – Knex.js和MySQL:将整数转换为布尔值以进行批量选择
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Knex.js和MySQL:将整数转换为布尔值以进行批量选择,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1464字,纯文字阅读大概需要3分钟。
内容图文
![javascript – Knex.js和MySQL:将整数转换为布尔值以进行批量选择](/upload/InfoBanner/zyjiaocheng/894/df2f301093674386a445a2a756c9eaf2.jpg)
我使用Knex作为与MySQL数据库通信的服务器.
我有select语句可能会从数据库中返回大量记录.这些记录中的一些单元格是布尔值,这实际上意味着它们只是整数(0或1).在JavaScript中我需要它们作为布尔值,所以我可以将它们作为实际的’true’或’false’值而不是’0’和’1’以JSON格式发送.到目前为止,我发现的唯一解决方案是通过循环运行查询结果,将每个tinyint记录更改为布尔值.但是,我想知道,有没有办法配置查询构建器以自动返回某些单元格的布尔值?
解决方法:
好.经过多次搜索,我在这里找到了答案:
https://github.com/tgriesser/knex/issues/1240.
诀窍是配置Knex使用的带下划线的mysql驱动程序与typeCast属性:
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
});
这不是一个完整的解决方案,因为它在布尔(tinyint)字段可以为NULL的情况下没有帮助. (我试图将此选项添加到转换函数中,但它不仅搞砸了tinyint字段上的结果,而且由于某种原因也搞砸了其他单元格).所以,如果有人知道如何用布尔值来解释NULL情况,那就太棒了.但无论如何,这是一个相当不错的解决方案.
编辑
当数据库字段为空时,此函数返回null.
(field, next) => {
console.log('TypeCasting', field.type, field.length);
if (field.type == 'TINY' && field.length == 1) {
let value = field.string();
return value ? (value == '1') : null;
}
return next();
}
内容总结
以上是互联网集市为您收集整理的javascript – Knex.js和MySQL:将整数转换为布尔值以进行批量选择全部内容,希望文章能够帮你解决javascript – Knex.js和MySQL:将整数转换为布尔值以进行批量选择所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。