2017-10-16 64 views
1

關於基於子集合值查詢數據的實際限制,有什麼建議的方式來管理Firestore中的多租戶?Firestore中的多租戶

我希望能夠檢索並限制對用戶所屬實體/公司相關數據的訪問。

實施例的數據結構:

/companies/{companyId}/users/ 
/companies/{companyId}/users/{user}/roles 
/companies/{companyId}/docs/ 

/companies/{companyId}/users/是一個集合?

我該如何才能檢索到用戶在/companies/{companyId}/users中擁有角色的公司?

+0

通常建議爲不同的環境使用單獨的項目,而不是將它們放在一個項目中。如果你這樣做,你將會對每個Firebase產品有更好的隔離和訪問控制。 –

回答

1

公司的FireStore路徑候補從收集到的文件,然後再返回:

/collection/document/subcollection/subdocument 

所以,是的,在這種情況下,你將有companiesusersdocs集合。集合也是隱式因爲它們是在文檔存在於文檔中時自動創建的,並且當文檔中不存在文檔時將被刪除。

目前,子集合查詢(例如,「給定公司中的所有用戶」)不受支持,因此您必須以其他方式構建查詢:將公司的用戶集合作爲屬性,何時執行查詢以查找該公司中的所有用戶。

ref.collection('users').where('company', '==', 'ACME').get().then((document) => {/* Do stuff here */}); 
+0

非常感謝@ mike-mcdonald – Remi

+0

@ mike-mcdonald您可以談談或指出我與用戶身份驗證的關係嗎?我還想限制用戶的訪問權限,我覺得我們需要做的是能夠爲用戶分配公司ID,然後限制讀取/寫入分配有該公司ID的子文檔的讀/寫。 否則在這個例子中用戶不能訪問所有其他用戶的數據?謝謝! – Shaun