美文网首页sequelize
Sequelize | 1. 模型 - 创建表

Sequelize | 1. 模型 - 创建表

作者: ShadowFieldEric | 来源:发表于2021-01-06 17:15 被阅读0次

创建模型有两种方法

UserModel.sync()方法用于与数据库同步(即创建表或更新表)

  1. 方法一:使用 sequelize.define(表名、属性、附加参数)方法
const UserModel = sequelize.define('t_users', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING,
    allowNull: true // default: true
  }
}, {
  freezeTableName: true // table name auto freeze
});

(async ()=> {
  await UserModel.sync({force: true}) // force:true => delete it if exists
})()
  1. 方法二:继承 Model基类并使用UserModel.init(属性、附加参数)方法
class UserModel extends Model { }
UserModel.init({
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING,
    allowNull: true
  }
}, {
  sequelize,
  modelName: 't_users',
  freezeTableName: true
});

(async () => {
  await UserModel.sync({ force: true }) // force:true => delete it if exists
})()

Tips

  1. 用以上两种方法创建表时会自带id、createAt、updateAt字段。可在附加参数中使用timestamps:false禁用。也可用createAt:falsecreateAt:'createTimestamp'来设置禁用某字段及修改字段名。
  2. UserModel.sync()方法,不带参数表示如果表不存在,才创建表。带{ force: true }参数则表示,原表存在需要删除原表。带{ force: false }参数则表示更新表的字段内容以匹配当前表。
  3. 初始化模型时,附加参数中的freezeTableName: true,表示是否需要自动复数表名,true表示不需要,会按照表名参数创建表。默认为false,自动复数表名。
  4. 如果modelName参数(方法一中第一个参数,方法二中第二个参数的modelName字段)未传入,则会自动使用模型名作为表名,按以上代码将会创建出UserModel表。
  5. sequelize.sync()方法,可同步所有的表创建或更新的内容。

相关文章

网友评论

    本文标题:Sequelize | 1. 模型 - 创建表

    本文链接:https://www.haomeiwen.com/subject/hakkoktx.html