等高线模型的布尔属性



我有一个MySQL数据库和一个水线模型,用于一个相当简单的记录:Todo。 这很简单,因为我们使用它来验证 Sails.js API 的概念。

CREATE TABLE `Todo` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `TodoItem` varchar(200) NOT NULL,
  `Completed` bit(1) NOT NULL DEFAULT b'0',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 COMMENT='   ';

我以这种方式设置了模型:

module.exports = {
  connection: 'companyMySql',
  tableName: 'Todo',
  attributes: {
    ID: {
      type: 'integer',
      autoIncrement: true,
      primaryKey: true
    },
    TodoItem: {
      type: 'string',
      required: true
    },
    Completed: {
      type: 'boolean',
      defaultsTo: 'false',
      size: 1,
      boolean: true
    }
  },
  autoCreatedAt: false,
  autoUpdatedAt: false,
  autoPK: false
};

我遇到的问题是,自动创建的 Todo API 在"已完成"字段中创建了一堆额外的垃圾,我正在尝试找出如何删除它。 我期待一个布尔值,但我绝对可以使用 0/1 或字符串文字,但这不是我得到的。 我已经在字段上尝试了各种验证,例如"min:0,max:1",但这并没有改变结果。

以下是检索单个记录的结果:

{
  "ID": 1,
  "TodoItem": "Create Todo API",
  "Completed": {
    "0": 1,
    "length": 1,
    "parent": [
      100,
      0,
      0,
      0,
      3,
      83,
      69,
      76,
      69,
      67,
      96,
      46,
      96,
      73,
      68,
      96,
      44,
      32,
      96,
      116,
      111,
      100,
      111,
      96,
      // This continues on for quite some time
    ],
    "offset": 2128 // This value increases each time I call a GET until it gets to ~8000, then it resets to ~500
  }
}

那么有没有人知道我能做些什么来从中获得一个直接的布尔值?

经过一些进一步的测试, 我能够通过使用 TINYINT(1) 作为我的列数据类型来获取一个布尔值按预期工作。 一旦我这样做了,这个模型就会按照我的预期工作:

Completed: {
  type: 'boolean',
  defaultsTo: false,
  boolean: true
}

这似乎仍然不理想,但这是我的目的的解决方案。

相关内容

  • 没有找到相关文章

最新更新