2016-07-25 139 views
0

這是一個有點理論上的問題,可以幫助我更好地理解事物。Nodejs:簡單縮放

我有一個頁面,讓人們將信息更新到一個MongoDB的如下:

{name: john} 
{address: home} 
{email: [email protected]} 

而且我有一個腳本,它允許其他人在家庭增添了細節太像:

{name: sarah} 
{address: home} 
{email: [email protected]} 

然後,我想任何人與電子郵件:[email protected]能夠訪問數據庫。

我的問題是,擴大這個範圍的最好方法是什麼?允許許多家庭使用這個設施存儲並查看他們的家庭信息,而其他人不會看到它?

我一直在使用mongo查找功能來只允許用戶訪問具有相同電子郵件域的文檔,但我想知道這是否構成良好實踐?

這是小規模多用戶設置的推薦做法嗎?我正在尋找一個相當安全但簡單的解決方案。

感謝您的建議!

回答

0

你可以做一兩件事,創建一個主模式在那裏你可以存儲一家之主的細節(或相關人員)創建一個模式,並在家庭模式,爲每一個家庭成員詳細信息,您可以存儲主數據及其數據,這樣您就可以在主帳戶和其他帳戶之間建立鏈接。如果您想搜索與主帳戶關聯的所有家庭成員,只需通過db.collection.find({master: masterId}, function(err, data){});。我認爲這是一個更好的方法,就好像你使用電子郵件一樣,傳遞字符串對於數據庫來說有點貴。基本上使用objectId將使查詢工作更快,然後字符串。

這是一種更安全,更快速的方法。

0

假設家庭的所有成員都具有唯一的電子郵件域並且都使用同一個域名似乎相當有限。例如,我們的家人在三個不同的域上有四個不同的電子郵件帳戶,其中兩個域不是自定義域(如gmail.com和yahoo.com)。

我認爲可能會更好的工作是讓第一個成立一個家庭成爲該家庭的「管理員」,然後他們可以添加他們想要的其他人的電子郵件地址(可能在他們的家人中)能夠爲這個特定的數據集做出貢獻。

因此,每個「帳戶」將有一個主管理員,然後是允許爲該帳戶提供捐款的其他用戶的列表。在數據庫中有幾種不同的結構。