环回 Mysql 连接器:BIT(1) 始终被识别为真

Loopback Mysql Connector: BIT(1) is recognized always true

我正在使用 Loopback 3.22 和 loopback-connector-mysql 5.3.1.

当我配置环回以将 BIT(1) mysql 列隐藏为 boolean 时,它总是 returns true

"isActive": {
  "type": "Boolean",
  "required": false,
  "length": null,
  "precision": 1,
  "scale": null,
  "mysql": {
    "columnName": "is_active",
    "dataType": "bit",
    "dataLength": null,
    "dataPrecision": 1,
    "dataScale": null,
    "nullable": "Y"
  }
},

我在这里浪费了很多时间,我什至尝试使用 before save 钩子,但列类型验证之前就开始了。

将列设为 Binary 将问题推到前端。

这是 LoopBack 的 MySQL 连接器的已知错误,请参阅以下 GitHub 问题:https://github.com/strongloop/loopback-connector-mysql/issues/325

对于卡在此处的任何人,我修补了 MySQL.prototype.fromColumnValue,以便让这个东西正常工作直到它被修复

let MySQL = require("loopback-connector-mysql/lib/mysql").MySQL;

...
case 'Boolean':
        // extra case of Buffer(1)
        if (val instanceof Buffer && val.length === 1) {
          val = Boolean(val[0]);
        } else {
          // default case
          val = Boolean(val);
        }
...