【问题标题】:Highlighting users liked posts on a Twitter like feed在 Twitter 上突出显示用户喜欢的帖子
【发布时间】:2019-06-02 07:41:40
【问题描述】:

我正在构建一个应用程序,其 UI 与 Twitter 非常相似,包括点赞/收藏帖子的功能,使用客户端和 API 端点的反应。

帖子来自各种来源,包括外部来源,因此就这个问题而言,让我们说 Youtube 视频和文章。

由于帖子来自多种来源,不一定存储在本地数据库中,这些“喜欢”存储在两个表中。

表 1 是一个“Like Resource”表,用于存储帖子类型,例如'video' 及其标识符,例如'2DFlghK1iuZz',如下所示:

TABLE `likes_resources` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(255),
  `identifier` varchar(255) 
)

表2是实际的like表,针对资源和用户进行存储,大致如下:

TABLE `likes` (
  `like_resource_id` int(11),
  `user_id` int(11)
)

此设置适用于喜欢和不喜欢帖子以及按帖子或用户列出喜欢的内容。

我正在苦苦挣扎的是,在查看主要提要时突出显示用户喜欢哪些帖子的最有效方式,该提要像 Twitter 提要一样无限滚动,而不会拉回潜在的巨大列表一个用户,并将其与提要中当前可见的帖子进行比较。

我最初的想法是将当前可见的提要项目列表发布到 API 端点,然后返回该列表中所有已被喜欢的项目的列表,以便它们可以突出显示。

这似乎是实现此功能的合理方法,还是有更好的方法?

【问题讨论】:

    标签: php database rest api architecture


    【解决方案1】:

    左加入是你的朋友。

    Select likes_resource.*, likes.user_id FROM likes_resource LEFT JOIN likes ON likes_resource.identifier = like_resource_id and user_id = @current_user_id
    

    连接找到匹配的任何地方都会引入并填充 user_id 字段。如果 user_id 为 null,则用户不喜欢它,您不应突出显示它。

    【讨论】:

    • 感谢您的回复。这个答案验证了我想要的方法,我只是想知道是否有更好的方法我想不出。
    • 总有更好的方法 :-) 这种方法会一直有效,直到无效为止。
    猜你喜欢
    • 2020-09-03
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多