2012-08-08 100 views
2

我想使用Parse.com JavaScript API(主要是骨干模型)建模友情。我正在使用内置的Parse.com用户类。我有一个mySQL /关系数据库模型背景,并且发现将我的思维转换为非sql /非规范化的方式很棘手。建模与Parse.com/backbone.js的友谊关系

应该支持标准的Facebook风格的方法: - 用户可以请求用户B的友谊 - 用户B可以接受或忽略的友谊请求

对于给定的用户我希望能够获取集合他们的朋友(双方都接受友谊)。

我一直在使用一个友谊模型和参考的用户模型作为发起者和接收者考虑:

initiator | acceptor | status 
==========+==========+======== 
user a | user b | accepted 
user b | user c | 
user c | user a | accepted 

我不能确定这是否是最好的方式,也是不确定使用ACL保护它。我担心友谊中的两个用户都需要能够更新这一行 - 以消除友谊。此外,用户b不应向Parse API发出请求,以显示其他用户的友谊。

要查询一个用户的朋友,我会做两个查询,一个用于其中用户为受体,以及一个用于发起者。

可有人请评论,如果这是为了模拟这种可接受的方式,如果还是不行,为什么不和提出改进意见。 谢谢!

更新12年8月8日: 一个问题,我在这里看到: 如果我设置在友谊类的每一行的ACL,因此引发剂可写的行,这是公开可读 - 然后受体不会能够将行更新为status = accepted。

友谊可以建模为表中的两行吗? 如:

initiator | acceptor | status 
==========+==========+======== 
user a | user b | requested 
user b | user a | accepted 

不知道我怎么会查询该然而得到给定用户的朋友!

回答

1

我决定使用Parse CloudCode实现这个以简化数据安全,并锁定到朋友类的所有客户端的写入权限。

我有三个云码功能... friendRequest,friendDelete,friendAccept。这些函数使用主密钥进行操作,以对朋友类进行所有写操作。阅读ACL被添加到友谊的两个用户的每一行 - 所以你只能看到你自己的友谊。