使用sequelize-cli生成带默认值的ENUM字段模型失败问题排查
Sequelize-CLI生成带默认值的ENUM字段命令失败原因
你执行的命令里,role字段的写法不符合Sequelize-CLI的属性解析规则,导致命令执行失败。
问题根源
Sequelize-CLI在解析--attributes参数时,对于需要多配置项的字段(比如ENUM类型+默认值),不能用enum:'{staff,admin}':defaultValue:staff这种冒号串联的格式,CLI会把整个字符串当成混乱的类型定义,无法识别默认值配置项。
正确写法
当字段需要配置多个属性(类型、枚举值、默认值)时,必须用对象格式定义,同时注意shell的引号转义:
Bash/Zsh环境下的命令:
npx sequelize-cli model:generate --name Profile --attributes "username:string,imageUrl:string,fullname:string,dateOfBirth:date,UserId:UUID,role:{type:enum,values:['staff','admin'],defaultValue:'staff'}"
Windows CMD环境下的命令(需要转义双引号):
npx sequelize-cli model:generate --name Profile --attributes "username:string,imageUrl:string,fullname:string,dateOfBirth:date,UserId:UUID,role:{type:enum,values:[\"staff\",\"admin\"],defaultValue:\"staff\"}"
补充说明
- 简单类型字段(比如
username:string)可以用冒号串联的简写格式,但涉及多配置项的字段,必须用{}包裹的对象结构来明确每个配置项。 - 之前的写法里,
defaultValue直接跟在枚举后面,CLI无法区分这是枚举的一部分还是独立配置,因此报错。
内容的提问来源于stack exchange,提问作者flyingduck92
相关产品推荐
相关产品推荐

