berlin75
berlin75

Reputation: 61

How to set default boolean value in sequelize

How to set default boolean value in 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 output:

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

mysql log:

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

Boolean true was converted to string 'true' automatically by sequelize

Environment:

  1. mysql version: 5.7.9
  2. Sequelize version: 5.8.11
  3. Node Version: v8.9.1
  4. OS: win10

Upvotes: 6

Views: 24643

Answers (3)

Akshay Sharma
Akshay Sharma

Reputation: 11

You can do it like

sequelize.define('User', { isDeleted: { type: DataTypes.BOOLEAN, defaultValue: false } });

Note that if you are using SQL then SQL will treat BOOLEAN as a TINYINT

For more clarificationollow this link

Upvotes: 0

sanengineer
sanengineer

Reputation: 25

Convert From This 👇

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

To This 👇:

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

Upvotes: -5

seahorsepip
seahorsepip

Reputation: 4819

Most databases define booleans as bits, sequelize-auto defines boolean default values as '0' and '1' when it generates a sequelize model from an existing database table.

So instead of true or false use '1' or '0'.

Upvotes: 8

Related Questions