1

作为标题,当我有一个内容列表,但不是每个人都能看到它们时。例如:我有组 1 和组 2 我创建了一个帖子,只有组 1 中的用户可以看到它。我创建了另一个帖子,只有组 2 中的用户可以看到它。

用户 1 在组 1 中,用户 2 在组 2。然后,当用户 1 看最新的内容列表时,他只能看到帖子 1。然后,用户用户 2 看最新的内容列表,他只能看到帖子2.

您可以看到,不同的帐户(用户)会在他/她的帖子列表中看到不同的帖子。因为我将所有帖子存储在一个表中,并且将 group_id 存储在其中,所以在为用户创建最新帖子列表时,我必须搜索所有最新帖子并一一检查用户是否可以看到它,如果有他没有权限的帖子太多了,表现会很糟糕。

另外,组在某些情况下不是静态的,例如:我的关注者,我的朋友,如果是这样,我仍然无法将用户ID存储在帖子表中,并且必须计算他们的关系以确定他/她可以阅读这个发布与否。同样,该帖子可以具有多个权限组(我的关注者和我的朋友可以看到它)。

我该如何改进它?

顺便说一句,为什么我不在帖子记录中插入 user_id 数组,因为可能组用户的数量很大,所以我只能将 group_id 保存在其中。

顺便说一句,我有一个 SNS 网站。我使用 mongodb 数据库。我使用 php。

4

1 回答 1

1

当用户授权时,将其存储group_id在会话数据中。然后,您可以group_id在生成菜单时使用它,在数据库查询中将其设置为一个额外条件,以仅获取允许查看该组的帖子。

如果用户没有授权,你可以使用一些默认group_id值只显示帖子,允许所有人查看。

对于复杂的条件,如果你有 mysql,我建议你使用UNION,但看起来你只需要执行多个查询。首先,将内容组应该对特定用户可用的所有可能的不同条件分开。

例如:如果用户只能看到他的群组、他的朋友和他关注的人的内容,你可以简单地做 3 个请求(获取他的群组的内容列表、他关注的人的帖子和他的朋友的帖子)然后合并这些数据用PHP并输出它。由于所有数据都是相同的(正如您所说 - 全部都在posts表格中),您在这里不需要任何花哨的东西。只需三个请求并在 php 端按照您想要的方式进行排序。

于 2013-03-10T04:50:48.920 回答