我正在构建一个社交媒体网络应用程序,我在数据库上有这样的东西:
表收藏: 用户身份;帖子ID;
在网络应用程序主控制器上是这样的:
var posts = [{postId: x, content: 'content'}];
var favorites = [{postId: x, userid: y}];
但是,当我在网络应用程序上加载所有帖子(不仅仅是收藏夹)时,我不知道最好的方法来检查给定帖子是否在用户的收藏夹中,以便为其中嵌入的心脏图标着色。
我有所有用户的最爱,但在性能方面有什么好处?最愚蠢的方法是检查给定帖子的postId是否在任何用户收藏夹对象中,但我认为它看起来很糟糕且收益率很低。
P.S:网络应用程序将在主视图中加载至少200个帖子,它们将填充分成小方块的屏幕。所以这就是为什么我需要一些优秀的性能,每当用户到达屏幕底部时,该应用程序就会加载200个帖子。
P.S:我知道这是概念问题,但如果有人需要知道我使用的是什么语言的所有javascript(端到端)+ MySQL。先谢谢你们。
答案 0 :(得分:1)
鉴于这些表格:
帖子:postId,userId,{more atts}
SELECT posts。*,IF(posts.postId IN(SELECT postID FROM Favorites WHERE userId = anId),true,false)asFavorited FROM Posts posts LIMIT 200;
此查询转到帖子并检索其中的200个。如果postId位于该userId(anID)的Favorite表中,则isFavorited为1,否则为false。
希望它有所帮助。