2

我正在尝试使用 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

不知道我将如何查询以获取给定用户的朋友!

4

1 回答 1

1

我决定使用 Parse CloudCode 来实现这一点,以简化数据安全性,并锁定所有客户端对 Friend 类的写访问。

我有三个云代码功能... friendRequest, friendDelete, friendAccept. 这些函数使用万能钥匙对朋友类进行所有写操作。阅读 ACL 将添加到友谊中两个用户的每一行 - 因此您只能查看自己的友谊。

于 2012-12-03T09:16:17.183 回答