回送Mysql连接器:始终识别BIT(1)

时间:2018-10-20 11:27:33

标签: javascript mysql loopback

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

当我将环回配置为将BIT(1)的mysql列配置为boolean时,它总是返回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会将问题推到前端。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

对于困在这里的任何人,我会肮脏地修补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);
        }
...