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