我们在构建MySQL数据库之后很久就开始使用Sequelize了 . 我们有两列“created”和“modified”,它们存储创建记录的日期和修改记录的日期 .

“created”列的类型为“DATETIME”,默认值为“CURRENT_TIMESTAMP” . “modified”列的类型为“TIMESTAMP”,默认值为“ON UPDATE CURRENT_TIMESTAMP” . MySQL使用UTC存储日期和时间 .

在Sequelize的模型中,我们设置“timestamps:false”,并按如下方式配置“创建和修改”列:

created:DataTypes.DATE,

modified:DataTypes.DATE

这允许我们在需要时拉动创建和修改的时间,但让MySQL数据库根据默认值记录这些值 .

如果我使用findAll方法进行简单查询,那么在返回的数据中,“created”值将返回UTC,就像在数据库中一样 . 但是,“修改”值不是像数据库中那样的UTC,而是落后两个小时 . 我目前的时区比UTC早两个小时,看起来Sequelize认为“修改后的”列在我的本地时区而不是UTC . 当我们想要根据“修改”值开始操作数据时,这会引起很大的问题 .

我有什么办法可以在Sequelize中纠正这个问题,或者我是否必须重新考虑数据库表的配置方式 .