【问题标题】:Loopback Mysql Connector: BIT(1) is recognized always trueLoopback Mysql 连接器:BIT(1) 始终被识别为 true
【发布时间】:2019-03-25 02:23:37
【问题描述】:

我正在使用 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 会将问题推送到前端。

【问题讨论】:

  • 为了记录我修补了MySQL.prototype.fromColumnValue,为了让这个东西工作并继续前进

标签: javascript mysql loopback


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不建议这样做,这就是我没有将答案标记为已接受的原因,但我已经准备好使用布尔值的前端,我必须集中解决问题而不是使用布尔属性来修复每个模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 2013-01-18
    • 2016-02-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多