sequelize 是一个广泛使用的 ORM 框架,它支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多个数据源。最近在以 Egg.js 为基础框架的项目中使用 egg-sequelize 来操作 MySQL,使用 model 查询过程中出现一个报错:nodejs.SequelizeDatabaseError: Unknown column 'createdAt' in 'field list' 。

一、报错原因
egg-sequelize 插件创建 model 时,会默认包含 createdAt 和 updatedAt 字段。如果是要查询之前已经创建好的表,而其中又没有 createdAt 和 updatedAt 字段,就会出现以上报错。
二、解决办法
在 config 中对 sequelize 进行配置,不使用默认的 timestamp 字段。
// config/config.default.js
config.sequelize = {
dialect: 'mysql',
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '123456',
database: 'egg',
define: {
timestamps: false, // 关键配置,默认为 true, 修改为 false 即可
freezeTableName: true,
}
}
大功告成 ~O(∩_∩)O~
欢迎访问:天问博客