2012-08-08 109 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被添加到友誼的兩個用戶的每一行 - 所以你只能看到你自己的友誼。