Skip to content

Firestore

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

Note

Если вы не уверены что лучше использовать Firestore или Realtime Database, прочтите официальное сравнение.

Документы и коллекции

База данных Firestore упорядочена по документам и коллекциям. Документ содержит данные, а коллекция содержит документы. Документы также могут содержать коллекции, называемые вложенными коллекциями.

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

Tip

Другое преимущество коллекций заключается в том, что они очень хорошо и быстро фильтруют / упорядочивают данные перед отправкой их игроку. К сожалению, GDevelop еще не поддерживает отправку запросов к коллекциям.

Для получения дополнительной информации о модели данных Firestore прочтите руководство по модели данных и руководство по структурированию данных.

Регулирование доступа

Возможно, вы не захотите позволять всем писать все. В противном случае каждый может изменять данные другого человека! Чтобы выбрать, кто и как может получать доступ, в Firebase есть система правил. Он взаимодействует с firebase аутентификацией, поэтому вы можете написать это правило, чтобы разрешить аутентифицированным игрокам получать доступ к базе данных:

У вас также может быть набор пользователей, и в каждом документе (названном в честь uid пользователя) есть их разрешения. Здесь, например, вы можете разрешить каждому пользователю с подтвержденным разрешением получить доступ к собственному документу в коллекции userdata, и каждый администратор для доступа к документам в коллекции globaldata:

Чтобы узнать подробнее, как писать правила, прочтите руководство по синтаксису и руководство по интеграции аутентификации.