在进行 Sequelize 操作 Mysql 数据库时,可能会遇到 "Unknown column 'createdAt' in 'field list'" 错误,这是由于 Sequelize 在默认情况下会向数据库中添加一些辅助字段来支持模型的 timestamp(时间戳)特性。如果你的数据库表没有这些字段,就会遇到这个错误。
下面我们来看看解决方法。
解决方法
方法一:手动添加辅助字段
我们可以手动为数据库表添加 Sequelize 所需要的辅助字段,如 createdAt 和 updatedAt 字段。这些字段指定了创建和更新记录的时间戳,Sequelize 可以据此确定最后更新的时间。
为了手动添加这些字段,你需要从 Sequelize 中导入 DataTypes,然后在定义数据库表时将它们包含进去。
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ----------------------------------------------------------- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ----- -- ------ - ----- ----------------- ---------- ----- - -- - ---------- ------------- ---------- ------------ --- ------------------------ -- - --------------------- --- ------ ------- ---------------- -------------- -- ------------------
在这个示例代码中,我们定义了一个 User 模型,并指定了 createdAt 和 updatedAt 字段。这将告诉 Sequelize 在创建新记录时使用 created_at 字段,而不是默认的 createdAt 字段。
方法二:通过配置选项禁用 timestamp 特性
如果你不需要 timestamp 特性,可以通过设置 createdAt 和 updatedAt 为 false 来禁用它们。
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ----------------------------------------------------------- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ----- -- ------ - ----- ----------------- ---------- ----- - -- - ----------- ----- --- ------------------------ -- - --------------------- --- ------ ------- ---------------- -------------- -- ------------------
在这个示例代码中,我们将 timestamps 配置选项设置为 false,从而禁用了 timestamp 特性。
总结
在使用 Sequelize 操作 Mysql 数据库时,遇到 "Unknown column 'createdAt' in 'field list'" 错误是比较常见的问题。这篇文章介绍了两种解决方法,一种是手动添加辅助字段,另一种是通过配置选项禁用 timestamp 特性。
希望这篇文章对你解决 Sequelize 操作 Mysql 数据库遇到 "Unknown column 'createdAt' in 'field list'" 错误有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f021e3f6b2d6eab3a12e1d