水线ORM在MySQL上插入空白单元格

时间:2017-07-08 00:54:43

标签: mysql sails.js waterline

我有一个Sails应用程序,它使用MySQL作为数据库(好吧,MySQL和其他人,但问题在于MySQL)。我的问题是在DB表上创建一条记录,但所有单元格都是空的,我不明白为什么!让我分享代码和表定义:

 CREATE TABLE `components` (
 `id` INT NOT NULL AUTO_INCREMENT,
 `column1` VARCHAR(32) NOT NULL,
 `column2` VARCHAR(50) NOT NULL,
 `group` INT,
 `subgroup` INT,
 `column3` INT,
 PRIMARY KEY (`id`),
 FOREIGN KEY (`column1`) REFERENCES `table1`(`recipe_id`),
 FOREIGN KEY (`group`) REFERENCES `table_groups`(`id`),
 FOREIGN KEY (`subgroup`) REFERENCES `table_groups`(`id`),
 FOREIGN KEY (`column3`) REFERENCES `table2`(`id`))  
DEFAULT CHARSET=utf8;

Sails模型定义:

module.exports = {
  connection: 'mysqlDb',
  autoCreatedAt: false,
  autoUpdatedAt: false,
  column1: {
    type: 'string',
    required: true
  },
  column2: {
    type: 'string',
    required: true
  },      
  group: {
    type: 'integer',
    required: true
  },
  subgroup: {
    type: 'integer',
    required: true
  },
  column3: {
    type: 'integer'
  }
};

水线创建查询:

const data = {
  column1: '383qa8475dd11231aa682y2728172y12',
  column2: 'canvas',
  groups: 2,
  subgroup: 5,
  column3: 1
};

Components.create(data).exec((error, results) => {
  if(error) console.error(error);
  else console.log('Created!');
});

它不会中断,但MySQL上的记录是空的,为什么插入所有内容空?在INT列中,插入0。

我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

哦,我......我发现了问题。我忘了在模型中将列名称包装在属性键内部,因此模型应该是这样的:

module.exports = {
  connection: 'mysqlDb',
  autoCreatedAt: false,
  autoUpdatedAt: false,
  attributes: {
    column1: {
      type: 'string',
      required: true
    },
    column2: {
      type: 'string',
      required: true
    },      
    group: {
      type: 'integer',
      required: true
    },
    subgroup: {
      type: 'integer',
      required: true
    },
    column3: {
      type: 'integer'
    }
    }  
};

非常愚蠢的错误,但它花了我几个小时!无论如何,这很愚蠢,但如果有人犯了同样的错误,我会在这里留下我的问题。