使用Parse.com/backbone.js建模友谊关系
我正在尝试使用Parse.com javascript API(基本上是主干模型)为友谊建模。我正在使用内置的Parse.com用户类。我有一个mySQL/关系数据库模型的背景,发现将我的想法转变为非sql/非规范化的方式很棘手 它应该支持标准的facebook风格的方法: -用户a可以请求用户b的友谊 -用户b可以接受或忽略友谊请求 对于给定的用户,我希望能够获取他们朋友的集合(双向接受的友谊) 我一直在考虑使用友谊模型,并将用户模型作为发起人和接受者:使用Parse.com/backbone.js建模友谊关系,backbone.js,parse-platform,Backbone.js,Parse Platform,我正在尝试使用Parse.com javascript API(基本上是主干模型)为友谊建模。我正在使用内置的Parse.com用户类。我有一个mySQL/关系数据库模型的背景,发现将我的想法转变为非sql/非规范化的方式很棘手 它应该支持标准的facebook风格的方法: -用户a可以请求用户b的友谊 -用户b可以接受或忽略友谊请求 对于给定的用户,我希望能够获取他们朋友的集合(双向接受的友谊) 我一直在考虑使用友谊模型,并将用户模型作为发起人和接受者: initiator | accepto
initiator | acceptor | status
==========+==========+========
user a | user b | accepted
user b | user c |
user c | user a | accepted
我不确定这是否是最好的方法,也不确定是否使用ACL保护它。我担心友谊中的两个用户都需要能够更新行,以便删除友谊。此外,用户b不应该能够向解析API发出会泄露其他用户友谊的请求
要查询用户a的朋友,我将执行两个查询,一个查询用户a是接收者的位置,另一个查询发起者的位置
如果这是一种可以接受的建模方法,或者如果不是,为什么不提出改进建议,请有人对此进行评论。
谢谢
2012年8月8日更新:
我在这里看到一个问题:
如果我在Friendships类中的每一行上设置了ACL,以便发起人可以写入该行,并且该行是公开可读的,那么接受者将无法将该行更新为status=accepted
一段友谊可以被模拟成表格中的两行吗?
例如:
不知道我将如何查询,以获得一个给定用户的朋友然而 我决定用Parse CloudCode实现这一点,以简化数据安全性,并锁定对Friend类的所有客户端写访问 我有三个云代码函数
friendRequest
,friendDelete
,friendAccept
。这些函数使用主密钥进行操作,以便在friend类上执行所有写入操作。读取ACL被添加到友谊中两个用户的每一行中,因此您只能查看自己的友谊
initiator | acceptor | status
==========+==========+========
user a | user b | requested
user b | user a | accepted