问题
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