egg-sequelize 表自动变复数
首页 > >    作者:lininn   2020年9月16日 10:47 星期三   热度:1923°   百度已收录  
时间:2020-9-16 10:47   热度:1923° 
在定义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();
      }
    }
  }

二维码加载中...
本文作者:lininn      文章标题: egg-sequelize 表自动变复数
本文地址:?post=476
版权声明:若无注明,本文皆为“覆手为雨”原创,转载请保留文章出处。
分享本文至:

返回顶部    首页    手机版本    后花园   会员注册   
版权所有:覆手为雨    站长: lininn