2017-10-16 26 views
1

サブコレクション値に基づいてデータを照会する際の実際の制限に関して、Firestoreのマルチテナントを管理するための推奨方法は何ですか?Firestoreのマルチテナンシー

私は、ユーザーがその一部であるエンティティ/会社に関連するデータへのアクセスを取得し、制限できるようにしたいと思います。

例のデータ構造:

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

/companies/{companyId}/users/収集することができますか?

どのように私は、ユーザーが/companies/{companyId}/usersで役割を所有する企業を検索することができますか?

再び
+0

一般的に、1つのプロジェクトにすべてのプロジェクトをまとめて配置するのではなく、環境ごとに異なるプロジェクトを使用することをお勧めします。このようにすれば、各Firebase製品に対する分離とアクセス制御がはるかに向上します。 –

答えて

1
ドキュメントへのコレクションから

Firestoreパスの代替とバック:

/collection/document/subcollection/subdocument 

そうです、このケースでは、あなたがcompaniesusers、およびdocsのコレクションを持っているでしょう。コレクションは暗黙的であり、ドキュメントが存在するときに自動的に作成され、ドキュメントが存在しないときに削除されます。

現在、特定の会社のすべてのユーザーなどのサブコレクションのクエリはサポートされていないため、別の方法でクエリを構造化する必要があります。その会社のすべてのユーザーを検索するクエリを実行します。

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

ありがとう@ mike-mcdonald – Remi

+0

@ mike-mcdonaldあなたはこのことがユーザ認証にどのように関連しているのか話すことができますか?私はまた、ユーザーのアクセスを制限したい、私は私たちがする必要があるようなユーザーに会社のIDを割り当てることができ、それに割り当てられている会社のIDでサブ文書の読み取り/書き込みを制限することができるように感じる。 この例では、ユーザーは他のすべてのユーザーのデータにアクセスできません。ありがとう! – Shaun

関連する問題