怎么使用 sequelize-cli 设置 mysql 日期类型长度

本教程将介绍如何使用 sequelize-cli 设置 mysql 日期类型长度的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么使用 sequelize-cli 设置 mysql 日期类型长度 教程 第1张

问题描述

我正在使用它来生成一个 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 日期类型长度的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。