模型的配置
影响Sequelize列名的处理方式:
class Bar extends Model {}Bar.init({ /* bla */ }, {// options// 模型名。本模型将以该名称存储在`sequelize.models`中。// 默认为类的名称,即在这种情况下为`Bar`。 这将控制自动生成的`foreignKey`的名称和关联命名modelName: 'bar',// 不要添加时间戳属性 (updatedAt, createdAt) 默认为truetimestamps: false,// 不实际删除数据库记录,而是设置一个新 deletedAt 属性,其值为当前日期// `paranoid` 仅在 `timestamps` 启用时可用paranoid: true,// 自定义三个时间戳字段// 必须timestamps,才能设置createdAt 和 updatedAt// 必须paranoid为true时,才能设置deletedAt// 值可以为自定义的字段名,或者布尔值表示是否使用createdAt: 'created_at',updatedAt: 'updated_at',deletedAt: 'deleted_at',// 自动设置字段为蛇型命名规则,默认为false// 不会覆盖已定义的字段选项属性underscored: true,// 禁止修改表名,// 默认为false,sequelize会自动将所有传递的模型名称转换为复数形式。// 设置为true,则数据库的表名和Model定义的保持一致。freezeTableName: true,// 定义表名,会覆盖define定义的表名tableName: 'custom_table_name',// 启用乐观锁定。启用后,sequelize将向模型添加版本计数属性,并在保存旧实例时引发 `OptimisticLockingError` 错误。// 设置为`true`或使用要启用的属性名称的字符串。version: true,// Sequelize 实例,传入sequelize实例sequelize,})
时间戳
默认情况下,Sequelize 会自动为模型添加createdAt和updatedAt,以记录数据何时进入数据库,以及数据最后更新时间。
请注意,如果使用的是Sequelize迁移,则需要将createdAt和updatedAt字段添加到迁移定义中:
module.exports = {up(queryInterface, Sequelize) {return queryInterface.createTable('my-table', {id: {type: Sequelize.INTEGER,primaryKey: true,autoIncrement: true,},// TimestampscreatedAt: Sequelize.DATE,updatedAt: Sequelize.DATE,})},down(queryInterface, Sequelize) {return queryInterface.dropTable('my-table');},}
如果不希望在模型上使用时间戳,或只需要一些时间戳,或者正在使用数据库现有的其它列,请直接进入配置以查看操作。
