在 sequelize ENUM 类型上设置默认值
Setting default value on sequelize ENUM type
我目前正在尝试在类型为 ENUM
的列上设置默认值,但是如果我将 defaultValue
设置为 "employee"
,这是枚举的值之一,我收到以下错误消息:
$ npx sequelize db:migrate
Sequelize CLI [Node: 10.16.0, CLI: 5.5.0, ORM: 5.15.1]
Loaded configuration file "src\config\config.js".
Using environment "development".
== 20190824180419-create-user: migrating =======
ERROR: invalid input value for enum "enum_Users_role": "employee"
在我的用户迁移文件定义下面找到
20190824180419-create-user.js
export default {
up: (queryInterface, Sequelize) => queryInterface.createTable('Users', {
uuid: {
allowNull: false,
primaryKey: true,
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
},
email: {
type: Sequelize.STRING
},
password: {
type: Sequelize.STRING
},
name: {
type: Sequelize.STRING
},
role: {
type: Sequelize.ENUM,
values: ['employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'],
defaultValue: 'employee'
}
}),
down: queryInterface => queryInterface.dropTable('Users')
};
在我的用户模型文件定义下面找到:
user.js
export default (sequelize, DataTypes) => {
const User = sequelize.define('User', {
uuid: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
email: DataTypes.STRING,
password: DataTypes.STRING,
name: DataTypes.STRING,
role: {
type: DataTypes.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
defaultValue: 'employee'
}
}, {});
User.associate = () => {
// associations can be defined here
};
return User;
};
软件包版本:
node: v10.16.0
npm: 6.9.0
sequelize: 5.15.1
sequelize-cli: 5.5.0
您设置 ENUM values 错误。它应该像您通过 ENUM
构造函数在模型定义中所做的那样:
{
type: Sequelize.DataTypes.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
defaultValue: 'employee',
}
在您的迁移文件中包含这些应该可以工作
role: {
type: Sequelize.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager',
'manager', 'supplier'),
defaultValue: 'employee'
}
你能删除模型中的 defaultValue
并像@rkm 提到的那样更改格式吗?所以你有这样的东西:
role: DataTypes.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
并且在您的迁移文件中为:
role: {
type: Sequelize.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
defaultValue: 'employee'
}
我目前正在尝试在类型为 ENUM
的列上设置默认值,但是如果我将 defaultValue
设置为 "employee"
,这是枚举的值之一,我收到以下错误消息:
$ npx sequelize db:migrate
Sequelize CLI [Node: 10.16.0, CLI: 5.5.0, ORM: 5.15.1]
Loaded configuration file "src\config\config.js".
Using environment "development".
== 20190824180419-create-user: migrating =======
ERROR: invalid input value for enum "enum_Users_role": "employee"
在我的用户迁移文件定义下面找到
20190824180419-create-user.js
export default {
up: (queryInterface, Sequelize) => queryInterface.createTable('Users', {
uuid: {
allowNull: false,
primaryKey: true,
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
},
email: {
type: Sequelize.STRING
},
password: {
type: Sequelize.STRING
},
name: {
type: Sequelize.STRING
},
role: {
type: Sequelize.ENUM,
values: ['employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'],
defaultValue: 'employee'
}
}),
down: queryInterface => queryInterface.dropTable('Users')
};
在我的用户模型文件定义下面找到:
user.js
export default (sequelize, DataTypes) => {
const User = sequelize.define('User', {
uuid: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
email: DataTypes.STRING,
password: DataTypes.STRING,
name: DataTypes.STRING,
role: {
type: DataTypes.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
defaultValue: 'employee'
}
}, {});
User.associate = () => {
// associations can be defined here
};
return User;
};
软件包版本:
node: v10.16.0
npm: 6.9.0
sequelize: 5.15.1
sequelize-cli: 5.5.0
您设置 ENUM values 错误。它应该像您通过 ENUM
构造函数在模型定义中所做的那样:
{
type: Sequelize.DataTypes.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
defaultValue: 'employee',
}
在您的迁移文件中包含这些应该可以工作
role: {
type: Sequelize.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager',
'manager', 'supplier'),
defaultValue: 'employee'
}
你能删除模型中的 defaultValue
并像@rkm 提到的那样更改格式吗?所以你有这样的东西:
role: DataTypes.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
并且在您的迁移文件中为:
role: {
type: Sequelize.ENUM('employee', 'super_admin', 'travel_admin', 'travel_team_manager', 'manager', 'supplier'),
defaultValue: 'employee'
}