首页 > 解决方案 > 创建函数中的枚举数据类型问题

问题描述

我创建了带有 id(主键)、title、created at、updated at、status 的“blogs”表(枚举类型的值为“active、inactive、hidden”,默认值为“active”)

从上述一组值和空值中提供状态值时,博客模型上的创建功能工作正常

const Blog = sequelize.define('blog', { id: { type: 
Sequelize.INTEGER, 
primaryKey: true, autoIncrement: true }, text: Sequelize.STRING, 
status : { type : Sequelize.ENUM, allowNull : false, values : 
['Inactive','Active','Hidden'], defaultValue : 'Active' } }); 
Blog.create({"title" :"hello","status":"abc"}).then(result => {
console.log(result);
});

上面的代码在 blogs 表中插入了一条新记录,状态为空值。但结果对象的状态为“abc”。我怎样才能获得新插入的记录?

标签: enumssequelize.js

解决方案


你应该ENUM这样定义:

status : { 
  type : Sequelize.ENUM('Inactive','Active','Hidden'), 
  allowNull : false, 
  defaultValue : 'Active',
  validate: {
    isIn: { 
      args: [['Inactive','Active','Hidden']],
      msg: "Wrong status"
    }
  }
}

为了验证枚举值,您可以使用每个属性验证


推荐阅读