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

59 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第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_mutualtrue,反之,取关的时候直接修改为false即可。值得注意的是,这样做也为获取好友列表提供了便利之处。

如何获取消息列表,就像微信那样。

目前这个是这样实现的。先查找好友列表,然后根据好友的id和自己的id去消息表中查找最新的消息,最后组装在一起。可能还有更好的实现方式,希望我早日找到吧。

更正

上一篇中,我提到了几个问题,后来客户端进行了更新,因此,有些问题不再是问题了,这里作一下更正。

为什么我的消息无限重复

上一篇中我定义了一个map用来记录请求时间。在客户端的更新中,新增了pre_msg_time字段表示作后一条消息的创建时间。因此,就不用专门设置一个map记录这个请求时间了,直接使用客户端返回的值即可。

总结

今天是大项目提交的截至日了。从2月一号到现在,我看着我们的项目从无到有,从漏洞百出到如今的基本满足使用要求。在这个过程中,我也学到了一些平常根本接触不到的知识。十分荣幸能够参加这次的字节青训营。