记录 Sequelize 和 MySQL 的一个小坑
发布于 5 年前 作者 Sirormy 3451 次浏览 来自 分享

之前由于错误数据库设计,表中某一个时间类型设置为了 Date 类型而不是 DateTime。 Sequelize 中的 Model 类型是 DataTypes.Date,但是实际情况并没有转换为 js 的 Date 类型。

概况是

Table
  - start_time[Date]
  - create_time[DateTime]

导致使用 getTime 方法报错,

const foo = await xx.findByPk(1)

// 报错:foo.startTime.getTime is not a function
console.log(foo.start_time.getTime())

// 正常时间戳
console.log(foo.create_time.getTime())

// typeof foo.start_time ==  'string'
// typeof foo.create_time ==  'object'

不太清楚其他语言中是否有类似的问题,我记得 Java 应该不会有问题。 但是在 Node MySQL Sequelize 场景下,应该避免使用 Date 数据类型,使用 DateTime 代替,如果必须使用 Date 数据类型,要做好数据类型的转换。

完。

2 回复

typeorm + postgresql ,使用 timestamptz 解决~

有个类型是DataTypes.DATEONLY, 对应MySQL的DATE.

回到顶部