求助一个有关 nest.js 中的问题。

2023-08-29 15:08:25 +08:00
 qq309187341
我使用 nest.js+typeorm 进行后端开发。我在实体类中定义了一个创建时间
@Column({ type: "timestamp", default: () => "CURRENT_TIMESTAMP", unique: true })
然后取出数据的时候,格式是日期形式的"create_time": "2023-08-27T21:55:45.000Z",
这个格式,前端接收了需要再转一下。才能变成 '2021-08-31 07:56:10'.
要么一种就是在服务层对取出的数据在转化一下。
想要问一下,实体类中有没有办法对取出的数据进行转化。
2728 次点击
所在节点    Node.js
29 条回复
NessajCN
2023-08-29 15:16:05 +08:00
需要转什么?
timestamp 发到前端你 new Date(timestamp) 直接用就好了呀
githmb
2023-08-29 15:18:55 +08:00
你变量的数据类型是 String 吧?改成 Date 就行了
mdn
2023-08-29 15:19:44 +08:00
转换后的时间是没有时区,非 +8 时区用户会看到不正确的时间
应该前端接收 iso 、时间戳,js 转换时间
Belmode
2023-08-29 15:27:33 +08:00
lzgshsj
2023-08-29 15:28:38 +08:00
显示啥样这不就该是前端的活吗
qq309187341
2023-08-29 15:42:49 +08:00
@NessajCN 发给前端的格式不一样,还需要转一下。所以我想直接在后端进行转化了。类似 java 里面的 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")这样的注解
qq309187341
2023-08-29 15:44:27 +08:00
@githmb 是 Date 的,但是存入数据库后取出来是 2023-08-27T21:55:45.000Z"这样的,我希望是 2021-08-31 07:56:10 这样。希望在实体类中就能转化掉。java 中有 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")的注解,我想知道 typeorm 里面有没有类似的注解
NessajCN
2023-08-29 15:48:05 +08:00
@qq309187341 你直接发 timestamp 有什么问题?
NessajCN
2023-08-29 15:50:23 +08:00
如果你怕直接发 Date 对象不好 serialize,那你+Date 一下发 int64 呗,为啥要费那老劲弄一长串字符串
qq309187341
2023-08-29 15:53:57 +08:00
@NessajCN 直接发送的话,前端还需要转化一层。我期望这个日期格式,直接服务器转化掉就好了。并不是很特别的字段类型。
YEX1024
2023-08-29 15:55:46 +08:00

楼上不是有答案了
Tyaqing
2023-08-29 15:56:08 +08:00
发原始时间给前端,前端有很多库,转更灵活一些
NessajCN
2023-08-29 16:00:10 +08:00
@qq309187341 你那前端不会自己用 new Date(timestamp) 和 data.toLocalString() 方法吗.....那你就服务端用这两个方法转了给他呗
Encloud
2023-08-29 16:02:15 +08:00
```typescript
@CreateDateColumn()
@Transform((d) => moment(d.value).toDate().getTime())
createTime: Date;
```
我是把 date 转为 timestamp ,用了 moment ,你根据自己需求改就好
oppddd
2023-08-29 16:57:33 +08:00
powerless
2023-08-29 17:02:59 +08:00
大佬们太强了
zzh2036
2023-08-29 17:04:13 +08:00
不想要 iso 格式,可以在 app.module 注册 typeorm 时,dateStrings 设置为 true
https://typeorm.io/data-source-options#mysql--mariadb-data-source-options
shyx
2023-08-29 17:21:38 +08:00
这种可以让前端去做的事,就不应该消耗服务器资源
Pastsong
2023-08-29 17:24:37 +08:00
后端又不知道浏览器时区,你要怎么序列化?
lwrench
2023-08-29 17:29:42 +08:00
前后端交互时间戳就好了,你不知道访问的用户是什么时区,后端转太麻烦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/969208

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX