Sequelize 返回数据时间格式化

问题

Sequelize 返回数据的时间格式与数据库不同

在数据库中时间的数据类型是 DATEIME

2023-11-16 12:14:49

但是使用Sequelize查询数据返回的却是 ISO 8601格式

2023-11-14T02:07:28.000Z

我使用了Sequelize的timestamps模式,它会自动关联 updateAt 和 createAt字段,现在需要格式化createAt的数据

注意

createdAt 现在只是一个只读属性的数据,直接修改数据是不行的

   // 查询数据
   let res = await ctx.model.Banner.findAll({
     where,
     limit,
     offset,
     order: [['sort', 'ASC']]
   });
   res.forEach(item => {
     item.createdAt = utils.YYYYMMDDHHmmss(item.createdAt);
     console.log(item.createdAt);
   });
   
   // 输出
   2023-11-16T04:14:49.000Z
   2023-11-14T02:07:28.000Z
   2023-11-14T02:07:28.000Z
   2023-11-14T02:07:28.000Z
   2023-11-14T02:07:28.000Z
   2023-11-14T02:07:28.000Z

解决

我们可以使用 Sequelize 提供的方法,例如 setDataValue
这里格式化工具是使用了node提供的utility插件

   // 查询数据
   let res = await ctx.model.Banner.findAll({
     where,
     limit,
     offset,
     order: [['sort', 'ASC']]
   });
   res.forEach(item => {
     item.setDataValue('createdAt', utils.YYYYMMDDHHmmss(item.createdAt));
     console.log(item.createdAt);
   });
   
   // 输出
   2023-11-16 12:14:49
   2023-11-14 10:07:28
   2023-11-14 10:07:28
   2023-11-14 10:07:28
   2023-11-14 10:07:28
   2023-11-14 10:07:28
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值