Какова оптимальная практика для мультитенантного приложения с запросами группы сбора в Firestore? - PullRequest
1 голос
/ 02 июня 2019

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

/tenant/1/customer/2/invoices

Если я создаю индекс группы сбора под названием invoices , и я хочу убедиться, что могу получить все счета для арендатора 1, как мне это легко сделать?

Я попытался настроить некоторые правила безопасности, чтобы запретить запросы к арендаторам, но он по-прежнему выдавал ошибки, связанные с отказом в доступе, поскольку он по-прежнему опрашивал клиентов.Как бы выглядели правильные правила пожарного магазина

1 Ответ

1 голос
/ 02 июня 2019

Проекты Firebase не очень хорошо подходят для мультитенантных приложений.Рекомендуется создавать разные проекты для каждого арендатора. Это избавит вас от многих проблем в будущем.

Если вам абсолютно необходимо иметь мультитенантность в одном проекте, ваша текущая структура базы данных не очень хорошо поддерживает группу сбора.запросы.Групповые запросы всегда запрашивают каждую коллекцию с заданным именем, без исключений.Вы не можете использовать правила безопасности для фильтрации результатов, потому что правила не являются фильтрами .Фильтрация может исходить только от клиента и подтверждаться правилами безопасности.С вашей текущей структурой вам нужно будет хранить идентификатор клиента в каждом документе, который вы собираетесь запросить с помощью запроса группы сбора, и чтобы клиент использовал его в качестве фильтра результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...