Как создать многопользовательскую модель данных в решении nosql, таком как firestore? - PullRequest
0 голосов
/ 09 марта 2019

Что я подразумеваю под multi-tenant?

  1. Пользователи могут принадлежать организации.
  2. Пользователь, который регистрируется без какого-либо приглашения от кого-либо, размещается в своем собственноморганизация (blah123) в качестве ее администратора.
  3. Несколько таких пользователей являются основателями своей единой организации в одном и том же приложении на базе пожарного депо.Они могут приглашать других, а приглашенные присоединяться к организации основателя.
  4. Любые данные, созданные для организации, или любые данные, созданные пользователями этой организации, должны быть сегрегированы от пользователей другой организации..
  5. Если мы захотим, мы сможем настроить пользователей, принадлежащих к той же организации, для просмотра любых данных, созданных другими пользователями этой организации.

Вопрос

Как эксперт, думаете ли вы, что это невозможная модель данных для Cloud Firestore?Как бы выглядела модель данных, которая может это сделать?

1 Ответ

1 голос
/ 09 марта 2019

Как эксперт, думаете ли вы, что это невозможная модель данных для пожарного магазина?

Определенно это не невозможно, на самом деле очень просто.

Как бы выглядела модель данных, которая может это сделать?

Возможная схема базы данных для вашего варианта использования может быть:

Firestore-root
   |
   --- users (collection)
   |    |
   |    --- uid (document)
   |         |
   |         --- organizations: ["organizationId", "organizationId"] (array)
   |         |
   |         --- //Other user properties
   |
   --- organizations (collection)
         |
         --- organizationId (document)
                |
                --- users: ["uid", "uid"] (array)
                |
                --- //Other organization properties
                |
                --- organizationData (collection)
                      |
                      --- organizationDataId (document)
                             |
                             --- //Organization Data properties

Пользователи могут принадлежать организации.

Как видите, идентификатор пользователя добавляется в массив users, который является свойством в каждом документе organizationId. Будучи массивом, вы можете добавить все идентификаторы всех пользователей, принадлежащих к этой конкретной организации.

Пользователь, который регистрируется без какого-либо приглашения от кого-либо, попадает в свою организацию (blah123) в качестве администратора.

Как только пользователь регистрируется, вы создаете новую организацию, генерируя новый organizationId и добавляете пользователя в массив users.

Несколько таких пользователей являются основателями своей собственной организации в одном и том же приложении на базе пожарного депо. Они могут приглашать других и приглашенных вступать в организацию основателя.

Ответил выше.

Любые данные, созданные для организации, или любые данные, созданные пользователями этой организации, должны быть отделены от пользователей другой организации.

Как видите, я создал подколлекцию с именем organizationData в документе organizationId, в которую вы можете добавить в качестве документов данные организации. Поскольку у вас уже есть пользовательские идентификаторы пользователя, принадлежащие к этой организации, вы можете просто использовать Правила безопасности Firestore , чтобы позволить только этим пользователям читать эти данные.

Если мы захотим, мы сможем настроить пользователей, принадлежащих к той же организации, для просмотра любых данных, созданных другими пользователями этой организации.

В этом случае, когда пользователь присоединяется к организации, вы должны сначала получить все пользовательские объекты этих организаций, затем запросить базу данных, чтобы получить все организации, к которым принадлежат эти пользователи, и скопировать uid во всех этих организациях.

Вот и все:)

...