typeorm

typeorm @Column документация

Документацию по возможным опциям можно посмотреть здесь: https://github.com/typeorm/typeorm/blob/...

typeorm update Каскадное обновление вложенных сущностей

Для каскадного обновления используйте в EntityManager метод save() а не update(), т.к. на момент написания данной заметки update не поддерживает каскадные "фишки":

Updates entity partially. Entity can be found by a given condition(s).
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
* Executes fast and efficient UPDATE query.

nestjs typeorm Test.createTestingModule ConnectionNotFoundError: Connection "default" was not found. .spec.ts Ошибка

В тесте для сервиса, использующего TypeOrm получаем:

ConnectionNotFoundError: Connection "default" was not found.

Суть проблемы в нашем случае кратко:
в конструкторе сервиса явно вызывался метод getManager():

this.entityManager = getManager();

В качестве решения перешли на использование декоратора @InjectEntityManager(). Подробности далее.

Как было

Ошибка была когда был такой код сервиса:

typeorm unique Составной уникальный индекс, пример

@Entity()
@Unique(["field1"]) // one field
@Unique("my_index_name", ["field1", "field2"]) //  перечисляем поля, которые включаем в индекс
export class MyEntity {
  @PrimaryGeneratedColumn('uuid')
  id: string;
  
  @Column()
  field1: string;
  
  @Column()
  field2: string;
}

Источник идеи: https://newbedev.com/typescript-typeorm-...

typeorm-fixtures-cli Typesctipt Пример консольной команды для фикстур

Если вы наблюдаете ошибку вроде:

Fail fixture loading: Cannot use import statement outside a module
(node:8121) UnhandledPromiseRejectionWarning: ConnectionNotFoundError: Connection "default" was not found.

И используете при этом typescript для миграций (в нашем случае такой конфиг), то исправить её можно, изменив описание команды мигрций в секции scripts файла package.json на такое:

typeorm Фикстуры, как наполнить базу сгенерированными данными

Можно использовать пакет typeorm-fixtures-cli (если требуется, см. наш пример для консольной команды с typescript)

Возможные ошибки при использовании

    Применение фикстур

  1. Fail fixture loading: bad indentation of a mapping entry at line .., column .:
    items:

    -- неправильный отсутуп в разметке файла .yml

typeorm cli Разбирает .env файл самостоятельно

Да, это так, происходит разбор .env, что можно увидеть в исходим коде скрипта cli.js

typeorm Вызов forFeature() и forRootAsync() в одном модуле, пример

Напр, так:

@Module({
  imports: [
    LoggerModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (config: ConfigService<EnvironmentVariables>) => getLoggerOptions(config),
    }),
// ....................
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => getTypeORMConfig(configService),
    }),
    TypeOrmModule.forFeature([MyRepository, MyDetailsRepository]),
  ],

Pages

Subscribe to RSS - typeorm