Перейти к основному содержанию

Опции источника данных

Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

Что такое DataSourceOptions?

DataSourceOptions — это конфигурация источника данных, передаваемая при создании нового экземпляра DataSource. Разные СУБД имеют свои специфические опции.

Общие опции источников данных

  • type - Тип СУБД. Необходимо указать используемую систему управления базами данных. Допустимые значения: "mysql", "postgres", "cockroachdb", "sap", "spanner", "mariadb", "sqlite", "cordova", "react-native", "nativescript", "sqljs", "oracle", "mssql", "mongodb", "aurora-mysql", "aurora-postgres", "expo", "better-sqlite3", "capacitor". Эта опция обязательна.

  • extra - Дополнительные параметры для передачи в базовый драйвер. Используйте эту опцию для передачи специфичных настроек драйверу базы данных.

  • entities - Сущности или схемы сущностей для загрузки и использования в этом источнике данных. Принимает классы сущностей, классы схем сущностей и пути к директориям для загрузки. Поддерживаются шаблоны glob. Пример: entities: [Post, Category, "entities/*.js", "modules/**/entities/*.js"]. Подробнее о сущностях. Подробнее о схемах сущностей.

  • subscribers - Подписчики для загрузки и использования в этом источнике данных. Принимает классы сущностей и пути к директориям для загрузки. Поддерживаются шаблоны glob. Пример: subscribers: [PostSubscriber, AppSubscriber, "subscribers/*.js", "modules/**/subscribers/*.js"]. Подробнее о подписчиках.

  • logging - Определяет, включено ли логирование. При значении true включается логирование запросов и ошибок. Можно указать конкретные типы логирования, например ["query", "error", "schema"]. Подробнее о логировании.

  • logger - Логгер для записи событий. Допустимые значения: "advanced-console", "formatted-console", "simple-console" и "file". По умолчанию: "advanced-console". Можно указать пользовательский класс логгера, реализующий интерфейс Logger. Подробнее о логировании.

  • maxQueryExecutionTime - Если время выполнения запроса превысит указанное значение (в миллисекундах), логгер зарегистрирует этот запрос.

  • poolSize - Задаёт максимальное количество активных соединений в пуле.

  • namingStrategy - Стратегия именования для таблиц и столбцов в базе данных.

  • entityPrefix - Добавляет указанную строку как префикс ко всем таблицам (или коллекциям) в этом источнике данных.

  • entitySkipConstructor - Указывает, пропускать ли конструкторы при десериализации сущностей из базы данных. Обратите внимание: без вызова конструктора приватные свойства и свойства по умолчанию не будут работать корректно.

  • dropSchema - Удаляет схему при каждой инициализации источника данных. Не используйте в production — это приведёт к потере всех данных. Полезно при отладке и разработке.

  • synchronize - Определяет, создавать ли схему базы данных автоматически при каждом запуске приложения. Не используйте в production — это может привести к потере данных. Полезно при отладке и разработке. Альтернатива: использование CLI-команды schema:sync. Для MongoDB не создаёт схему (т.к. MongoDB бесcхемная), а синхронизирует данные через создание индексов.

  • migrations - Миграции для загрузки и использования в этом источнике данных.

  • migrationsRun - Определяет, запускать ли миграции автоматически при каждом запуске приложения.

  • migrationsTableName - Название таблицы в базе данных для хранения информации о выполненных миграциях.

  • migrationsTransactionMode - Управляет режимом транзакции при выполнении миграций.

  • metadataTableName - Имя таблицы в базе данных, содержащей информацию о метаданных таблиц. По умолчанию таблица называется "typeorm_metadata".

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

  • isolateWhereStatements - Включает изоляцию условий WHERE, автоматически заключая каждое условие в скобки. Например, .where("user.firstName = :search OR user.lastName = :search") преобразуется в WHERE (user.firstName = ? OR user.lastName = ?) вместо WHERE user.firstName = ? OR user.lastName = ?.

  • invalidWhereValuesBehavior - Определяет обработку значений null и undefined в условиях WHERE для всех операций TypeORM (find, query builders, методы репозитория).

    • Опции для null:
      • 'ignore' (по умолчанию) - пропускает свойства со значением null
      • 'sql-null' - преобразует null в SQL NULL
      • 'throw' - вызывает ошибку
    • Опции для undefined:
      • 'ignore' (по умолчанию) - пропускает свойства со значением undefined
      • 'throw' - вызывает ошибку

    Пример: invalidWhereValuesBehavior: { null: 'sql-null', undefined: 'throw' }.

    Подробнее об Обработке Null и Undefined.

Пример настроек источника данных

Небольшой пример настроек источника данных для mysql:

{
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
logging: true,
synchronize: true,
entities: [__dirname + "/entities/**/*{.js,.ts}"],
subscribers: [__dirname + "/subscribers/**/*{.js,.ts}"],
entitySchemas: [__dirname + "/schemas/**/*.json"],
migrations: [__dirname + "/migrations/**/*{.js,.ts}"]
}