请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于评论点赞的两个问题

  1. 对于评论的点赞,同一个用户对同一个评论的点赞处理,如果已经对这个评论点赞了,当再次点赞时,应该是取消点赞。
    所以,这里的逻辑,应该是先判断用户是否对当前评论点赞过。这里我的代码稍微处理了一下,还请老师看一下是否合理
 @authenticated_async
    async def post(self, comment_id):
        re_data = {}
        objects = self.application.objects
        try:
            comment = await objects.get(
                PostComment, id=int(comment_id)
            )
            # 查询当前用户是否对当前评论点过赞
            # 如果已经点赞了,则取消点赞
            comment_like = await objects.get(
                CommentLike, user=self.current_user,
                post_comment_id=comment_id
            )
            comment.like_nums -= 1
            await objects.update(comment)
            await objects.delete(comment_like)
            re_data['code'] = 200
            re_data['msg'] = 'cancel like'
        except PostComment.DoesNotExist as e:
            re_data['code'] = 201
            re_data['msg'] = "comment does not exists"
        except CommentLike.DoesNotExist as e:
            # 没有点赞,则做 点赞处理
            comment_like = await objects.create(
                CommentLike, user=self.current_user,
                post_comment=comment
            )
            comment.like_nums += 1
            await objects.update(comment)
            re_data['code'] = 200
            re_data['msg'] = 'like success'

        self.finish(re_data)
  1. 第二个问题。就是我们在浏览网站时,点赞的图标会根据当前用户是否对当前评论点赞过,给出不同的状态。例如微博。用户点赞的微博和没有点赞的微博。那个点赞的图标的状态是不一样的。
    当,服务器返回评论的列表数据时,根据当前用户返回的评论列表中,如何包含,此用户已经点赞的评论呢。这里我想了一下,尚未用代码实现。
    首先,给评论的数据模型添加一个字段,来标识此用户是否对这个评论做出过点赞。然后取得所有的评论列表,再根据用户id查找到所有点赞的数据。然后通过for循环,对评论数据和点赞做匹配,如果,评论的数据包含在点赞的数据中,就去修改新增字段的值。
    但是这样处理,如果数据量大的话,会不会效率慢。请老师斧正

正在回答

1回答

bobby 2019-05-08 15:38:18
  1. 第一个问题: 点赞之后再次点赞是否取消点赞,这个其实是业务的需求,从开发的角度上来讲没有应该不应该的说法,就像很多网站或者app是不支持取消点赞的,如果要取消点赞的话你这里的后端逻辑没有问题

  2. 一个用户是否对一个评论点赞过,CommentLike已经给出了用户的id和对应的comment的id了,只要这里能通过user的id和comment的id查询出记录来就证明已经点赞过了,你是否想设计成:只要给改评论下的任何一个回复点了?那么就代表这个用户已经对这个评论点赞过了? 如果这样设计的话你有没有想过合理性是否合理呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 慕无忌King #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-05-08 21:59:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信