这是我参与「第五届青训营」伴学笔记创作活动的第13天
前言
这篇文章主要记录了我在项目开发时遇到的问题及解决方案
获取视频流时如何不用单独写一遍token解析流程
在文档定义中提到,视频流接口不需要返回参数,但是返回的值有些字段与登录态相关。
如果在实现该接口的时候再写一遍token校验过程也属实是没这个必要。因此,我们在实现jwt验证时单独对该接口加入判断即可。
查询关注状态、点赞状态时总是为true
只是因为在使用结构体查询时,gorm会自动忽略值为缺省值的字段,因此在涉及到可能会有缺省值(0,"",false等)的查询时,使用map[string]any查询而不是struct查询
为什么获取不到消息
在文档中消息是这样定义的,然而,根据大佬对测试客户端反编译的结果来看,其中ID字段是没有的,created_time字段是int64类型,因此,需要修改对应的字段的类型,这样就可以获取到消息了。
为什么只能收到一方的消息,而收不到另一方的消息
这个问题是因为在数据库中记录消息时会按照from,to记录。但聊天是一个双向过程。但是在查询时,有可能只查了一个方向的。举例来说,你只查了A -> B,没有查B -> A。需要将两个方向的记录都查一遍才行。注意,查完后要按照时间排序哦。
为什么我的消息无限重复
这是因为在轮询查询消息时,我们忽略了上次查询的时间。因此在查询的时候,时间总是0->now,因此,需要我们在服务器上定义一个map[int64]int64类型的变量用于记录上次查询的时间,只返回上次查询时间到这次查询时间之内的记录。
为什么关注状态、点赞状态修改失败
这个问题可能与查询状态类似。只是因为在使用结构体修改数据时,gorm会自动忽略值为缺省值的字段,因此在涉及到可能会有缺省值(0,"",false等)的查询时,使用map[string]any修改而不是struct修改。