В TypeORM существует возможность создания полей с массивом перечисления для различных баз данных, включая MariaDB. Для того, чтобы создать такое поле, вам потребуется выполнить несколько шагов.
1. Определите перечисление:
enum Fruit { APPLE = 'apple', BANANA = 'banana', ORANGE = 'orange', }
2. Создайте новую сущность, в которой будет использоваться поле с массивом из перечисления:
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class MyEntity { @PrimaryGeneratedColumn() id: number; @Column('enum', { enum: Fruit, array: true, default: [], }) fruits: Fruit[]; }
Важно отметить, что в @Column
вы указываете тип enum
и добавляете свойство array: true
, чтобы указать, что это поле будет массивом.
3. Настройте подключение к базе данных в файле app.module.ts
(или там, где у вас настроена конфигурация TypeORM):
import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', host: 'localhost', port: 3306, username: 'username', password: 'password', database: 'database_name', entities: [MyEntity], synchronize: true, }), ], }) export class AppModule {}
Обратите внимание на импорт TypeOrmModule.forRoot
и добавление MyEntity
в entities
.
4. Теперь, когда вы настроили все необходимое, вы можете использовать вашу сущность MyEntity
для взаимодействия с базой данных MariaDB.
import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { MyEntity, Fruit } from './path-to-my-entity'; @Injectable() export class MyService { constructor( @InjectRepository(MyEntity) private myEntityRepository: Repository<MyEntity>, ) {} async createMyEntity(): Promise<MyEntity> { const myEntity = new MyEntity(); myEntity.fruits = [Fruit.APPLE, Fruit.BANANA]; return this.myEntityRepository.save(myEntity); } }
В этом примере мы создаем экземпляр MyEntity
и устанавливаем поле fruits
в массив [Fruit.APPLE, Fruit.BANANA]
. Затем мы сохраняем его с помощью метода myEntityRepository.save()
.
Таким образом, вы настроили поле с массивом из перечисления в TypeORM под MariaDB и можете использовать его для хранения и извлечения данных в базе данных.