egg-sequelize 表自动变复数
emer 发布于 2020-9-16 10:47 2068 次阅读
在定义model的时候,禁止转换为复数
app.model.define('project', { id: { type: INTEGER, primaryKey: true, autoIncrement: true }, name: STRING(20), created_at: DATE, updated_at: DATE }, { timestamps: true, // 自动维护时间戳 [ created_at、updated_at ] // 禁止修改表名,默认情况下,sequelize将自动将所有传递的模型名称(define的第一个参数)转换为复数 // 但是为了安全着想,复数的转换可能会发生变化,所以禁止该行为 freezeTableName: true});
或者直接修改 config/config.[env].js(下同)中的sequelize配置: exports.sequelize = { dialect: 'mysql', .... define: { underscored: true, // 注意需要加上这个, egg-sequelize只是简单的使用Object.assign对配置和默认配置做了merge,// 如果不加这个 update_at会被转变成 updateAt故报错 // 禁止修改表名,默认情况下,sequelize将自动将所有传递的模型名称(define的第一个参数)转换为复数 // 但是为了安全着想,复数的转换可能会发生变化,所以禁止该行为 freezeTableName: true } }
但是egg-sequelize在读取时间时,还是会返回UTC格式,还需要改一下配置,添加: exports.sequelize = { dialect: 'mysql', .... timezone: '+08:00' ,// 保存为本地时区 dialectOptions: { dateStrings: true, typeCast(field, next) { // for reading from database if (field.type === "DATETIME") { return field.string(); } return next(); } } }