问题标签 [social-network-friendship]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
715 浏览

php - 按字母顺序显示用户朋友的最佳方式

在我正在使用 PHP/MySQL 开发的社交网络上,我有一个朋友页面,它会显示用户拥有的所有朋友,就像大多数网络一样。我在 MySQL 中有一个朋友表,它只有几个字段。auto_ID、from_user_ID、to_friend_ID、日期

我想让朋友页面有几个不同的选项来对结果进行排序,

  1. 通过 auto_ID 基本上按照添加朋友的顺序。它只是一个自动增量 ID

  2. 按日期的新朋友,将使用日期字段

  3. 通过朋友的名字,将有一个按字母顺序排列的列表。

字母顺序是我需要一些建议的地方。我将有一个字母 AZ 的列表,当用户单击 K 时,它将显示所有以 K 开头的用户名,依此类推。诀窍是它需要很快,所以在用户表上执行 JOIN 不是一种选择,尽管大多数人会认为它很快,但这不是我想要执行此操作的性能。我的一个想法是在我的友谊表中添加一个额外的字段并将用户名的第一个字母存储在其中。用户可以随时更改那里的名称,因此我必须确保在用户更改名称的任何时候更新可能的数千条记录。

有一个更好的方法吗?

0 投票
3 回答
2218 浏览

ruby-on-rails - 用户有很多:用户,或者我必须对基于朋友的社交网络使用另一种方式吗?

我正在 Rails 中创建一个小型社交网络,人们可以在其中将彼此添加为朋友。我创建了一个名为 的模型'user',其中包含电子邮件、带有密码盐的强 md5 哈希等。

如何创建类似于将另一个用户添加为朋友的选项?是否有可能has_many_and_belongs_to :user在用户模型中有类似的东西?所以一个用户有很多用户,属于很多用户。或者我应该使用另一种方式,比如添加一个有user1s_id:integer和的友谊模型user2s_id:integer

0 投票
1 回答
1133 浏览

ruby-on-rails - Rails 3 中的高级友谊模型和查询

我有友谊模型,对于每一个新的友谊,我都会创造两个新的记录:

  • 用户 1 和朋友 1
  • 朋友 1 和用户 1

我可以检索所有标准人员,例如:friends、friends、pending_friends... 当我尝试获取普通朋友、朋友的朋友时,情况变得复杂...

现在为了获得共同的友谊,我使用类似的东西:

我也可以使用完整的查询,finder_sql例如:

如何在 Rails 3 中以优雅的方式做到这一点?

0 投票
2 回答
325 浏览

ruby-on-rails - 为什么要在 Rails 中建立社交链接?

看了很多关于 Rails 中社交链接系统的教程。我注意到似乎一直使用朋友作为用户对象的别名,并使用连接模型“友谊”。

起初我遵循了这一点,但随着我的前进,它似乎使事情变得create.friend非常迟钝。现在在我的示例中,我使用术语“联系人”和“连接”......当我列出所有用户的联系人时,我希望通过联系人控制器和视图( /contacts , /contacts/搜索、/contacts/create 等),但所有的杂乱无章都真正处理了连接(友谊)表……当我走的时候,这似乎真的倒退了。

为什么这样做?我看到的唯一好处是可以说“contact.email”之类的东西,但我不确定我的代码中的额外抽象和体操是否值得。我很乐意说contact.user.email.

链接到联系人页面? link_to contact.user(对?)

如果我只有一个具有标准、明显、粗略结构的模型“联系人”并放弃用户模型的这种别名,是否有任何犯规?坦率地说,除了身份验证之外,我根本看不到弄乱用户模型有什么好处……我将用户的所有信息都放在了个人资料中。

还是我错过了什么?

更新:我似乎不清楚,所以我会详细说明。

计划A:

然后为此使用正常的 CRUD。转到我的“联系人”页面将显示我所有具有正常 crud 操作的联系人等...要获取联系人的电子邮件,在这种情况下,我会说:contact.connection.email

然后我做了一些阅读,发现其他人都在这样做:

但随后使用联系人控制器(朋友控制器)在这里交出杂物。唯一的好处似乎是你可以说contact.email ......但它使联系人控制器中的所有垃圾都变得奇怪恕我直言。例如:

http://railsforum.com/viewtopic.php?id=16760

我想知道为什么明显的断开连接?

更新 2:

所以我明白了......联系人必须是对用户模型的引用......没有解决这个问题。3 步骤,无论在那种情况下。但是,当我尝试沿着这条路径执行时,我仍然对一些要点感到困惑:

使用带有这样的代码的 contacts_controller.rb 是否违反 mvc:

然后,当我尝试执行 form_for @connection、路由错误等等时,它变得很奇怪。我知道我正在解决这个问题,并且非常感谢迄今为止的所有反馈。

更新 3:

这里举例说明了我对这些关系感到困惑的一个实际例子:

在遍历用户的联系人时,如何巧妙地调用在列表中显示此联系人以删除目标的连接?也许我应该只是遍历用户的连接,拉出 connection.contact.email 来显示电子邮件?

0 投票
3 回答
15710 浏览

facebook - facebook graph api..get朋友的朋友

我正在使用 FB graph api 来获取我朋友的朋友列表:

现在奇怪的是,这适用于我的一些朋友,但不适用于其他一些朋友。有人可以告诉我为什么会发生这种情况以及可能的解决方法吗?

在它不起作用的情况下,我收到以下消息:“无法查找 YYYYYY 的所有朋友。只能查找登录用户 (XXXXX),或具有适当权限的登录用户的朋友”

我再说一遍,我可以使用上面的 URL 获取我的一些朋友的朋友列表。这里提到了哪些权限?

0 投票
2 回答
3545 浏览

facebook-graph-api - 获取友谊开始日期

我一直在寻找一种方法来了解两个用户成为朋友的日期。我找到了这个问题,但它只解释了如何使用多个 FQL 查询来模拟友谊页面。

我要确定的是您可以在友谊页面顶部看到的日期(“Facebook 朋友自从...”)。

0 投票
1 回答
196 浏览

php - 在社交网络环境中,在全球范围内检查友谊的最简单方法是什么?

作为参考,这是我最近提出的一个与此问题相关的关于 SO 的问题: How to model Friendship Relations

在这个问题上,我们想出了一种方法,仅在朋友发布时才显示新闻提要项目。但是,我需要的是有关如何以更动态的方式检查友谊的建议,以便可以在多个站点功能中使用它。

例如,我刚刚安装了一个评论系统,允许用户对新闻帖子发表评论。但是,这不仅限于朋友,而且应该是(以后应该由帖子的作者设为可选)。

仅由朋友发布新闻项目略有不同,因为我直接从数据库中获取数据,并使用SELECT子查询仅获取当前用户的朋友的帖子。但是,在评论的示例中,我只想在此人是朋友时显示评论发布表单。我实际上并没有从数据库中提取任何东西来挑选、排序和显示。

知道这样的问题会在整个网站中多次出现,检查友谊的最简单方法是什么? 我能否以某种方式将所有朋友的用户 ID 从数据库中提取到某种会话数组中,然后 if(in_array($friends)) 在我需要确定相关人员是否是当前登录用户的朋友时执行? 在我的脑海中,这听起来会很好,但我想先听听你的意见。

我上面链接的问题解释了我的友谊表是如何工作的,以防你帮助我解决这个问题。

0 投票
3 回答
3326 浏览

django - 友谊关系的最佳模型(在 Django 中)

为社交网站建模用户之间的友谊的最佳方式是什么?

可能的状态是:

  • 没有友谊
  • A到B的FriendRequest,B需要确认(这个是不对称的)
  • A 和 B 是朋友(这是对称的)

现在选择正确的模型很复杂。

我的朋友是我个人资料的一部分

很明显,A.profile.friends 与其他用户是多对多关系。

  • 没有友谊:B 不在 A.friends 中,A 不在 B.friends 中
  • A请求与B建立友谊:A.friends中的B
  • 朋友:A.friends 中的 B 和 B.friends 中的 A

但是将friend与friendrequest关系合并似乎很不干净。如果没有这种合并,数据是多余的,因为“B.friends 中的 A 而不是 A.friends 中的 B”将是未定义的状态。

Friend-Lookup: A.friends.filter(friends__contains=B) #相当复杂的数据库级别查找,对编码人员来说不直观

单独的表

FriendRequest 很明显,一个有 requester 和 requested_user 的类,选择也很明显。

朋友模型不是很好,因为它会将 person1 和 person2 作为字段,并且所有查找都需要选择具有 person1=A 和 person2=B 或 person1=B 和 person2=A 的朋友

Friend-Lookup: Friend.objects.filter(person1=A) union Friend.objects.filter(person2=A) #unclean 需要联合两个集合

分离 many2many 表

另一种选择是带有friends字段的Friend模型,这是一个many2many字段,它恰好链接到两个人。然后选择匹配朋友字段中的一个人,然后只返回模型,其中可以通过从朋友集中减去 A 来提取人 B。但这太过分了,因为任何朋友对象都不会有超过 2 个关联的人。

Friend-Lookup: Friendship.objects.filter(persons__contains=A) #查询两个表

那么,您认为存储友谊关系最简洁、最直观的解决方案是什么?有没有常见的模式如何做到这一点?

0 投票
1 回答
300 浏览

sql - 在设计友谊请求SQL表时需要帮助

我有用于友谊请求的 SQL 表。表在服务器上 - 客户端是手机

为了在移动设备中进行更好的练习,为了不一直查询整个友谊请求表,我还在设备上的本地数据库中存储了一个表。查询表后 - 它存储在本地数据库中,因此如果没有任何更改,设备不需要从服务器进行查询。

所以 - 在应用程序初始化中......(或每次进入设备应用程序的邮箱)设备正在询问服务器是否有新消息和友谊请求更新......对于消息来说很简单 - 因为每条新消息有一个不同的 ID,我在服务器上搜索所有消息,其中 id > 存储 id.... 但是对于友谊请求 - 我更新了服务器数据库中的行,因此索引仍然是相同的索引...

我想到了两个选择:

  1. 添加日期列并检查比上次检查晚完成的更新(上次检查将存储在本地数据库中)。我更喜欢对索引而不是日期进行比较

  2. 应用启动时获取用户的所有好友请求条目并在本地进行比较

有什么建议吗?更好的想法?

0 投票
1 回答
2056 浏览

rest - 友谊系统的 RESTful URL 设计

我是我公司的 API 开发人员。我们正在开发一个社交网络。我们正在使用友谊系统。我们正在使用面向 API 的系统。我将编写的 api 将被我们正在开发的每个平台使用。

我通常有一个用户资源,我正在使用友谊表来跟踪友谊:

现在,我正在尝试考虑如何实现必要的 URI。但我不知道我应该如何准确地实现它。而我只能想出这个想法,无法将其付诸实施:

假设我有 2 个用户,一个使用usernameof john,另一个使用usernameof jane

jane想要添加john为朋友,何时添加,她发送了一个POST请求:

john看到这个,想否认或确认,为此,我想出了两个不同的想法;第一个是:

或第二个是:

按照惯例,第二个对我来说似乎更合适,但我认为我可以做到

所以,我被困在这里。我想到的就是这些例子。我不认为这些是正确的。