Files
docs/docs/60-common-modules/data-store/00-overview.md
T
2026-06-16 15:43:18 +03:00

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’ами.


Поддерживаемые сценарии

  • Работа в productionforRoot подключает модуль к базе данных, а forFeature регистрирует bucket’ы для конкретного feature.
  • ТестированиеforTesting создаёт in-memory версию, совместимую по API с production, но без использования БД.

Зачем использовать DataStoreModule

  • Унифицированное API для хранения служебных данных модулей без необходимости создания собственных таблиц.
  • Автоматическое разделение данных между модулями и конкурсами.
  • Простая интеграция в любой feature-модуль.

Когда использовать DataStoreModule

  • Временное хранение данных, не требующих сложных запросов.
  • Хранение данных, не требующих частого обращения и сложных запросов.
  • Хранение данных при прототипировании.