2012-08-08 5 views
2

Parse.com 자바 스크립트 API (본질적으로 백본 모델)를 사용하여 우정을 모델링하려고합니다. 내장 Parse.com 사용자 클래스를 사용하고 있습니다. 나는 mySQL/관계형 DB 모델 배경을 가지고 있고, 비 SQL/비정규 화 된 방식으로 생각을 바꾸는 것이 어렵다는 것을 알았다.Parse.com/backbone.js와의 우호 관계 모델링

이것은 표준 페이스 북 스타일의 방법을 지원한다 : - 사용자를 사용자 B의 우정 요청할 수 있습니다 - 수락하거나 우정 요청 내가 컬렉션을 가져올 수 있도록하려면 해당 사용자에 대해

를 무시할 수 있습니다 사용자 B를 그들의 친구의 (양쪽 방향으로 인정 된 우정).

것은 나는 우정 모델을 사용하고 기자 및 수용체와 같은 사용자 모델을 참조 고려했다 :이 최선의 방법이며, ACL을 함께 보안에 대한도 모르는 경우

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

내가 확실입니다. 우정에 빠진 두 사용자가 우정을 제거하기 위해 행을 업데이트 할 수 있어야합니다. 또한 사용자 b는 Parse API에 다른 사용자의 우정을 나타내는 요청을 할 수 없어야합니다.

사용자 a의 친구를 쿼리하려면 사용자 a가 수락자인 위치와 개시자인 위치에 대해 두 가지 쿼리를 수행해야합니다.

누군가가이 모델을 만들 수있는 방법인지, 또는 개선 할 이유가 없다고 제안 할 수 있다면 의견을 남길 수 있습니까? 감사합니다.

업데이트 8/8/12 : 여기를 참조 문제 : 나는 우정 클래스의 각 행에 ACL을 설정하는 경우 그래서 기자가 행을 쓸 수 있습니다, 그것은 공개적으로 읽을 수있는 - 그 수용체는하지 않습니다 status = accepted로 행을 갱신 할 수 있어야합니다.

우정을 테이블의 두 행으로 모델링 할 수 있습니까? 예 :

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

아니 생각 나는 그러나 특정 사용자의 친구를 얻기 위해 그 쿼리를 얼마나!

답변

1

데이터 보안을 단순화하고 Friend 클래스에 대한 모든 클라이언트 쓰기 액세스를 잠그기 위해 이것을 Parse CloudCode와 함께 구현하기로 결정했습니다.

세 가지 클라우드 코드 기능이 있습니다 ... friendRequest, friendDelete, friendAccept. 이 함수는 friend 클래스에서 모든 쓰기 작업을 수행하기 위해 마스터 키로 작동합니다. 읽기 ACL은 우정의 두 사용자에 대한 각 행에 추가되므로 자신의 우정 만 볼 수 있습니다.

관련 문제