使用 eggjs 和 sequelize 进行开发,一些要注意的地方
1、egg 的 egg-sequelize 插件是 sequelize 的V4版本,目前已经更新到V5版本,API有一些变化,比如V5没有了findById等,需要注意。
2、配置时区,要将时区配置为东八区,否则自动插入 created_at 字段的时候会是0时区的时间
const sequelize = { dialect: 'mysql', host: '127.0.0.1', port: 3306, database: 'test', username: 'root', password: 'root', timezone: '+08:00', // 配置时区 };
3、数据库创建表的时候必须要有 id, created_at, updated_at 三个字段,数据库表名要使用复数形式,不如 user -> users,如果没使用复数形式,在创建 model 的时候就要配置 freezeTableName
const User = app.model.define('user', { id: { type: INTEGER, primaryKey: true, autoIncrement: true }, name: STRING(30), age: INTEGER, }, { freezeTableName: true, // Model 对应的表名将与model名相同 // timestamps: false, // 关闭 created_at 和 updated_at 字段 });
4、new Date('2019-04-01') 查询的是 2019-04-01 08:00:00 的时间,而不是0点,要想是0点需要 new Date('2019-04-01 00:00:00')
const res = await ctx.model.User.findAll({ where: { created_at: { $lt: new Date(), // 小于当前时间的 // $lt: new Date(new Date() - 1000 * 60 * 60 * 24 * 1), // 小于当前时间一天前的 // $lt: new Date('2019-04-03'), // 小于 2019-04-03 08:00:00 // $lt: new Date('2019-04-03 00:00:00'), // 小于 2019-04-03 00:00:00 $gt: new Date(ctx.params.date) // 接收到的日期字符串,如:2019-4-1 } } });