大项目问题记录及解决方案(1) | 青训营笔记

88 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第13天

前言

这篇文章主要记录了我在项目开发时遇到的问题及解决方案

获取视频流时如何不用单独写一遍token解析流程

在文档定义中提到,视频流接口不需要返回参数,但是返回的值有些字段与登录态相关。 image.png 如果在实现该接口的时候再写一遍token校验过程也属实是没这个必要。因此,我们在实现jwt验证时单独对该接口加入判断即可。 image.png

查询关注状态、点赞状态时总是为true

只是因为在使用结构体查询时,gorm会自动忽略值为缺省值的字段,因此在涉及到可能会有缺省值(0,"",false等)的查询时,使用map[string]any查询而不是struct查询

为什么获取不到消息

在文档中消息是这样定义的,然而,根据大佬对测试客户端反编译的结果来看,其中ID字段是没有的,created_time字段是int64类型,因此,需要修改对应的字段的类型,这样就可以获取到消息了。

image.png

为什么只能收到一方的消息,而收不到另一方的消息

这个问题是因为在数据库中记录消息时会按照from,to记录。但聊天是一个双向过程。但是在查询时,有可能只查了一个方向的。举例来说,你只查了A -> B,没有查B -> A。需要将两个方向的记录都查一遍才行。注意,查完后要按照时间排序哦。

为什么我的消息无限重复

这是因为在轮询查询消息时,我们忽略了上次查询的时间。因此在查询的时候,时间总是0->now,因此,需要我们在服务器上定义一个map[int64]int64类型的变量用于记录上次查询的时间,只返回上次查询时间到这次查询时间之内的记录。

为什么关注状态、点赞状态修改失败

这个问题可能与查询状态类似。只是因为在使用结构体修改数据时,gorm会自动忽略值为缺省值的字段,因此在涉及到可能会有缺省值(0,"",false等)的查询时,使用map[string]any修改而不是struct修改。