postgresql - 在 sequelize ENUM 类型上设置默认值

标签 postgresql sequelize.js database-migration

我目前正在尝试为类型为 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',
}

关于postgresql - 在 sequelize ENUM 类型上设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707798/

相关文章:

ruby-on-rails - 当且仅当查询不适用于 Rails 和 Postgres 时,如果包含,则全部关闭

javascript - 是否可以在 postgreSQL 中将表 A ID 索引到表 B userId?

orm - 有条件地对allownull约束进行后续处理

sql - 如何在 SQL 查询中按最小值分组?

ruby-on-rails - 获取数据时出错:Errno::ENETUNREACH:尝试对无法访问的网络进行套接字操作。安装 gem 时出错

sql - 值数组类似于某个值

mysql - 未创建 Sequelize 外键(对于 MySQL)

sql - 将带有重复项的 MySQL 表迁移到带有 UNIQUE 约束的另一个表的最佳方法

Oracle 的 OUTER JOIN (+) on string - Migration PostgreSQL

postgresql - 为什么 PostgreSQL 性能在 VACUUM FULL 之后没有恢复到最大值?