怎么使用 sequelize-cli 设置 mysql 日期类型长度
本教程将介绍如何使用 sequelize-cli 设置 mysql 日期类型长度的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我正在使用它来生成一个 mysql 用户表
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?
通过文档和源代码都没有找到,这是不需要的吗?请问,有谁知道这是怎么回事?
推荐答案
目前没有生成带有详细属性的模型的选项.您可以在此处查看负责的代码. 这是非常清晰的代码.容易理解.
我通常只使用名称而不是字段生成它,然后将我的模型复制粘贴到生成的文件中.
这是模型.
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 });
我运行 sequelize-cli model:generate --name MyModel
并将所有 init 参数对象直接复制粘贴到生成的文件中.像这样:
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.
所以删除 validate 并添加其他的.
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 设置 mysql 日期类型长度的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。