3.3 KiB
3.3 KiB
Общие концепции
Что такое DataStoreModule
DataStoreModule — это сервисный модуль в NestJS, предназначенный для хранения внутренних данных
feature-модулей. Он работает через концепцию bucket (аналог внутреннего S3 или localStorage
для конкретного модуля).
Важно:
DataStoreModuleне имеет отношения к S3 и используется только для хранения служебных данных конкретного модуля.
Каждый модуль получает собственное пространство хранения, изолированное от других. Даже если два разных модуля используют bucket с одинаковым именем, они всё равно будут независимы.
Основные концепции
Bucket
- Логическое пространство хранения внутри модуля.
- Для каждого конкурса используется отдельный bucket.
- Если требуется хранить данные, не связанные с конкурсом, используется
contestId = 0. - Имеет имя (например,
"test"). - Может использоваться для разных типов данных: настройки, результаты модерации и т.д.
Пример:
bucket: settings→ хранение общих настроек модуля.bucket: moderationResults→ хранение результатов модерации.
Feature-модуль
Каждый бизнес-модуль (например, FooModule, BarModule) подключает DataStoreModule через метод
forFeature. В результате внутри модуля можно работать с одним или несколькими bucket’ами.
Поддерживаемые сценарии
- Работа в production —
forRootподключает модуль к базе данных, аforFeatureрегистрирует bucket’ы для конкретного feature. - Тестирование —
forTestingсоздаёт in-memory версию, совместимую по API с production, но без использования БД.
Зачем использовать DataStoreModule
- Унифицированное API для хранения служебных данных модулей без необходимости создания собственных таблиц.
- Автоматическое разделение данных между модулями и конкурсами.
- Простая интеграция в любой feature-модуль.
Когда использовать DataStoreModule
- Временное хранение данных, не требующих сложных запросов.
- Хранение данных, не требующих частого обращения и сложных запросов.
- Хранение данных при прототипировании.