美文网首页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