如何使用 sequelize-cli 设置 mysql 日期类型长度
how to set mysql datetype length with sequelize-cli
sequelize/CLI 版本:“sequelize-cli”:“^6.2.0”,“sequelize”:“^6.3.3”
我正在使用它生成一个 mysql 用户 table
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
期望使用 sequelize-cli 生成具有长度的属性
firstName:DataTypes.STRING(20) // model with length
npx sequelize-cli model:generate --name User --attributes firstName:string // how to add length with cli?
通过文档和源码都没有找到,这个不用了吧?拜托,有人知道这里发生了什么吗?
目前没有生成具有详细属性的模型的选项。 You can check the responsible code here. 这是非常清晰的代码。通俗易懂。
我通常只使用名称生成它,没有字段,然后将我的模型复制粘贴到生成的文件中。
这是模型。
class MyModel extends Sequelize.Model { }
MyModel.init({
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [100, 5000]
}
}
}, { sequelize: sequelizeInstance });
I 运行 sequelize-cli model:generate --name MyModel
并将所有初始化参数对象直接复制粘贴到生成的文件中。像这样:
queryInterface.createTable(
'MyModel',
{
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [100, 5000]
}
}
}
);
当然我们在这里不需要验证,如果存在一对多关联,我们还需要一些额外的字段,如 Id 和外键。如果您允许 sequelize 将其添加到您的模型实例,请不要忘记添加 updatedAt 和 createdAt。
所以删除验证并添加其他的。
queryInterface.createTable(
'MyModel',
{
id: {
type: Sequelize.DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false
},
createdAt: {
type: Sequelize.DataTypes.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DataTypes.DATE,
allowNull: false,
},
MyOtherModelId: {
type: Sequelize.DataTypes.INTEGER,
allowNull: false,
references: {
model: 'MyOtherModel'
},
onUpdate: 'cascade',
onDelete: 'restrict'
}
}
);
这就是我设法从我的模型创建迁移的方式。不幸的是,sequelize cli 没有生成命令的任何详细选项。但请随意添加一些!从 github 中提取并处理它。会很高兴。您还可以自动执行此描述的过程并将其添加为另一个命令以对 cli 进行续集。
sequelize/CLI 版本:“sequelize-cli”:“^6.2.0”,“sequelize”:“^6.3.3”
我正在使用它生成一个 mysql 用户 table
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
期望使用 sequelize-cli 生成具有长度的属性
firstName:DataTypes.STRING(20) // model with length
npx sequelize-cli model:generate --name User --attributes firstName:string // how to add length with cli?
通过文档和源码都没有找到,这个不用了吧?拜托,有人知道这里发生了什么吗?
目前没有生成具有详细属性的模型的选项。 You can check the responsible code here. 这是非常清晰的代码。通俗易懂。
我通常只使用名称生成它,没有字段,然后将我的模型复制粘贴到生成的文件中。
这是模型。
class MyModel extends Sequelize.Model { }
MyModel.init({
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [100, 5000]
}
}
}, { sequelize: sequelizeInstance });
I 运行 sequelize-cli model:generate --name MyModel
并将所有初始化参数对象直接复制粘贴到生成的文件中。像这样:
queryInterface.createTable(
'MyModel',
{
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [100, 5000]
}
}
}
);
当然我们在这里不需要验证,如果存在一对多关联,我们还需要一些额外的字段,如 Id 和外键。如果您允许 sequelize 将其添加到您的模型实例,请不要忘记添加 updatedAt 和 createdAt。
所以删除验证并添加其他的。
queryInterface.createTable(
'MyModel',
{
id: {
type: Sequelize.DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false
},
createdAt: {
type: Sequelize.DataTypes.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DataTypes.DATE,
allowNull: false,
},
MyOtherModelId: {
type: Sequelize.DataTypes.INTEGER,
allowNull: false,
references: {
model: 'MyOtherModel'
},
onUpdate: 'cascade',
onDelete: 'restrict'
}
}
);
这就是我设法从我的模型创建迁移的方式。不幸的是,sequelize cli 没有生成命令的任何详细选项。但请随意添加一些!从 github 中提取并处理它。会很高兴。您还可以自动执行此描述的过程并将其添加为另一个命令以对 cli 进行续集。