如何在sequelize中设置默认布尔值

时间:2019-06-27 15:43:25

标签: node.js sequelize.js

如何在sequelize中设置默认布尔值?

var Foo = sequelize.define('foo', {
  name: Sequelize.STRING,
  flag: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: true}
})
Foo.sync().then(() => {
  Foo.create({name: "name"})
})

nodejs输出:

Unhandled rejection SequelizeDatabaseError: Incorrect integer value: 'true' for column 'flag' at row 1

mysql日志:

INSERT INTO `foos` (`id`,`name`,`flag`,`createdAt`,`updatedAt`) VALUES (DEFAULT,'name','true','2019-06-27 22:41:25','2019-06-27 22:41:25')

布尔值true通过续集自动转换为字符串'true'

环境:

  1. mysql版本:5.7.9
  2. 后续版本:5.8.11
  3. 节点版本:v8.9.1
  4. 操作系统:win10

2 个答案:

答案 0 :(得分:0)

大多数数据库将布尔值定义为位,当sequelize-auto从现有数据库表生成序列模型时,sequelize-auto将布尔默认值定义为'0'和'1'。

因此,请使用“ 1”或“ 0”代替真或假。

答案 1 :(得分:-1)

从此转换?

var Foo = sequelize.define('foo', {
  name: Sequelize.STRING,
  flag: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: true}
})

到这个?:

var Foo = sequelize.define('foo', {
  name:{
     type: Sequelize.BOOLEAN, 
     allowNull: false, 
     defaultValue: true
  }
});