我正在尝试使用 Parse.com javascript API(基本上是骨干模型)来模拟友谊。我正在使用内置的 Parse.com 用户类。我有一个 mySQL / 关系数据库模型背景,发现将我的想法转变为非 sql / 非规范化方式很棘手。
它应该支持标准的 facebook 风格方法: - 用户 a 可以请求用户 b 的友谊 - 用户 b 可以接受或忽略友谊请求
对于给定的用户,我希望能够获取他们朋友的集合(双向接受的友谊)。
我一直在考虑使用 Friendships 模型并将用户模型引用为发起者和接受者:
initiator | acceptor | status
==========+==========+========
user a | user b | accepted
user b | user c |
user c | user a | accepted
我不确定这是否是最好的方法,也不确定是否使用 ACL 保护它。我担心友谊中的两个用户都需要能够更新行 - 以删除友谊。此外,用户 b 不应该能够向 Parse API 发出会泄露其他用户友谊的请求。
要查询用户 a 的朋友,我会执行两个查询,一个查询用户 a 是接受者的位置,一个查询发起者的位置。
有人可以评论这是否是一种可接受的建模方式,或者如果不是为什么不建议改进。谢谢!
2012 年 8 月 8 日更新:我在这里看到的一个问题:如果我在 Friendships 类的每一行上设置一个 ACL,以便发起者可以写入该行,并且它是公开可读的 - 那么接受者将无法更新该行状态 = 接受。
友谊可以建模为表格中的两行吗?例如:
initiator | acceptor | status
==========+==========+========
user a | user b | requested
user b | user a | accepted
不知道我将如何查询以获取给定用户的朋友!