最近建表的时候,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类型进行取值方式
最新推荐文章于 2021-01-14 16:52:29 发布