最近建表的时候,is_promotion字段打算用来放 true|false|NULL 的布尔变量,于是设置了 bit 类型。在node端使用knex查询的时候,在对 is_promotion 取值的时候展示了一个类似普通对象的假象:

通过 is_promotion.data[0]取值将会报错或者无效。事实上它返回的不是 true | false | null 或者 0 | 1 | null,也不是一个普通对象,而是一个 buffer | null:

所以只能通过Buffer.prototype.toString的方法。在 node 断点调试,通过 buffer 取值调试,可见它以 hex 的编码形式存在:

设置 bit 类型将使 knex 对数据读取变得麻烦。因此在对数据占用空间要求不高的情况下,可以用tinyint(1)取代 bit 仿造布尔操作。
Knex对bit类型进行取值方式
最新推荐文章于 2023-04-05 19:21:29 发布
本文探讨了在数据库中使用bit类型字段时遇到的问题,特别是在使用Knex.js进行Node.js开发时。由于bit类型的特殊性,从数据库获取的数据并非直接为布尔值或整数,而是以Buffer形式返回,这增加了数据处理的复杂性。文章建议在非空间敏感的应用场景下,可以考虑使用tinyint(1)来替代bit类型。

2205

被折叠的 条评论
为什么被折叠?



