如何检查用户是否已经喜欢评论

How to check if the user had already like the comment

我正在为客户端设计一个'http api',它是关于评论的,情况是如果应用程序用户登录,他可以喜欢一些评论和不喜欢它们,但他们不能喜欢两次或更多次次,所以每次当应用程序从我的 'http api' 获取评论数据时,数据应该能够告诉客户端应用程序评论是否已经被用户喜欢。 好吧,我最近实现了api,但我发现效果不佳,我的设计是:

插入: 我创建了一个 table 'Comment' 用于保存评论(内容、创建时间等),一个 table'User' 用于应用用户,还有一个 table 'Like'用于记录哪个用户喜欢哪个评论的信息 当用户喜欢评论时: 1、在table'comment'中增加记录'like_counts' 2、insert into table Like set user='the user' and comment='the comment'

查询:

  1. 从mysql查询评论列表(每页约20条记录)
  2. Foreach 来自 table 的评论和查询就像评论=='the comment' 和用户='the user'
  3. 如果在第2步中存在查询结果,则表示该用户之前曾点赞过该评论。

问题是当客户端获得一页的评论时,这意味着我必须使用 table 'Like' 执行 20 个查询来检查用户之前是否喜欢它,那将是我认为非常糟糕的设计。我知道我可以使用一些缓存,比如 Redis,这是下一步,我想知道 mysql 方式的好方法是什么?

我想评论存储在 table 中,因此会有 comment_id.

对于 user_id 的用户也是如此。

点赞存储在名为“点赞”的 table 中,有 2 列:user_id 和 comment_id。作为评论-table 和用户-table.

的外键

它们一起构成 table 赞中的主键。从而防止重复。

如果用户 123 想再次点赞评论 1000,将导致 123-1000 组合出现重复键错误。 所以你的应用程序在插入之前不需要检查:插入只会失败。您的应用程序的任务是识别该错误消息并给出错误消息