这是我参与「第五届青训营」伴学笔记创作活动的第15天
前言
本文记录了在大项目开发期间遇到的一些问题及解决方案。
如何使用最小成本返回各种总和,比如关注数、粉丝数等
答:在相关的表中;单独设立一个字段,比如在user表中单独设立字段follow_count字段表示关注人数。当有关注动态变更时,同步修改这个字段的值。
如何在关注动作后修改关注数呢?
答:在sql中,可以使用如下语句修改。
update user set follow_count = follow_count + 1;
为了简化开发,我们通常使用gorm框架进行数据的增删改查操作,那么又如何实现呢?
经过多方查找,这里给出一个可以实现的方法。如下所示。
Db.Model(&User{ID: req.GetUserId()}).UpdateColumn("follow_count", gorm.Expr("follow_count + 1"))
上述方法对于修改各种数的+1或者-1都有效。注意,这些数的最小值是0,在建表时要加限制哦。
如何才能表示互相关注呢?
答:可以在关注表中专门设立一个字段is_mutual表示这种关系。如果用户A关注了用户B,而此时用户B也关注了用户A,那么就修改关注表中的这两个用户的is_mutual为true,反之,取关的时候直接修改为false即可。值得注意的是,这样做也为获取好友列表提供了便利之处。
如何获取消息列表,就像微信那样。
目前这个是这样实现的。先查找好友列表,然后根据好友的id和自己的id去消息表中查找最新的消息,最后组装在一起。可能还有更好的实现方式,希望我早日找到吧。
更正
在上一篇中,我提到了几个问题,后来客户端进行了更新,因此,有些问题不再是问题了,这里作一下更正。
为什么我的消息无限重复
上一篇中我定义了一个map用来记录请求时间。在客户端的更新中,新增了pre_msg_time字段表示作后一条消息的创建时间。因此,就不用专门设置一个map记录这个请求时间了,直接使用客户端返回的值即可。
总结
今天是大项目提交的截至日了。从2月一号到现在,我看着我们的项目从无到有,从漏洞百出到如今的基本满足使用要求。在这个过程中,我也学到了一些平常根本接触不到的知识。十分荣幸能够参加这次的字节青训营。