CNode

记录 Sequelize 和 MySQL 的一个小坑

分享
SSirormy发布于7 年前最后回复7 年前2 回复4093 浏览0 收藏

之前由于错误数据库设计,表中某一个时间类型设置为了 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)

Z
zuohuadong#1·7 年前

typeorm + postgresql ,使用 timestamptz 解决~

P
pentium100#2·7 年前

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

参与回复
登录后即可参与回复。登录