想看看是否在客户端视图或数据库查询中保留显示喜欢/不喜欢按钮的逻辑的位置达成共识。将逻辑推送到查询本身可以使其保持干净和一致,但需要对帖子主页列表的每个查询进行个性化处理,并且不允许缓存该请求。
设置:MongoDb 数据库(或者可能是 neo4j)、node.js api 和应用服务器、iOS 移动客户端和网站。大多数帖子可以有十几个赞,但少数帖子会有数百个赞。大多数用户会喜欢 50 - 300 个帖子,少数用户喜欢数千个帖子。
我的用例:用户浏览最近热门帖子的列表,并根据他们是否已经喜欢该帖子,在每个帖子旁边看到一个“喜欢”或“不喜欢”按钮。
解决方案-
方法 1:将查询中的用户 ID 传递给数据库,并返回一个最受欢迎的帖子列表,其中包含在查询中计算的 isLiked 属性。
方法 2:客户端应用程序为该用户获取并保持同步的喜欢的 id,并且视图确定是否为任何给定的帖子列表显示“喜欢”或“不喜欢”按钮。帖子列表可以缓存在服务器上或 CDN 中,不需要任何个性化设置。
方法3?在 rest api 服务层有更有效的方法吗?