Самый простой способ синхронизировать документ между несколькими коллекциями в Firestore? - PullRequest
0 голосов
/ 20 февраля 2020

Предположим, у меня есть две коллекции верхнего уровня, users и companies. Коллекция companies содержит вложенную коллекцию Users, которая называется employees. Какой самый простой способ обеспечить синхронизацию записей пользователя в путях users и companies/employees? Является ли более распространенным использование пакетных операций или триггерной функции?

1 Ответ

2 голосов
/ 20 февраля 2020

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

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

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

Я не вижу необходимости запускать облачную функцию, если вы можете выполнить пакетную запись. , так как пакет вступит в силу атомарно и немедленно, в то время как функция будет иметь некоторую задержку и, возможно, возникнет состояние гонки, поскольку у вас нет гарантированного порядка выполнения.

...