LexxXell
@LexxXell
Программист и немного IT-журналист

Как в TypeORM под MariaDB сделать поле с массивом из перечисления?

В модели пользователя нужно сделать поле с его правами:
{
    ...,
    permissions: ["CAN_READ",  "CAN_WRITE"]
}

Раньше, использовал TypeORM + PostgreSQL я делал так:
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";

enum Permissions {
  CAN_READ = "CAN_READ",
  CAN_WRITE = "CAN_WRITE"
}

@Entity({ name: 'users' })
export class User {

  @PrimaryGeneratedColumn()
  public id: number;

  @Column({ type: 'enum', enum: Permissions, array: true, })
  public permissions: Permissions[]

}


В текущем проекте необходимо использовать MariaDB (Ver 15.1 Distrib 10.8.3-MariaDB), и вышеуказанный код вызывает ошибку:
QueryFailedError: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'array ('CAN_READ', 'CAN_WRITE') NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB' at line 1
    at Query.onResult (/home/lexx/workspace/test/ship.place/src/driver/mysql/MysqlQueryRunner.ts:222:33)
    at Query.execute (/home/lexx/workspace/test/ship.place/node_modules/mysql2/lib/commands/command.js:36:14)
    at PoolConnection.handlePacket (/home/lexx/workspace/test/ship.place/node_modules/mysql2/lib/connection.js:456:32)
    at PacketParser.onPacket (/home/lexx/workspace/test/ship.place/node_modules/mysql2/lib/connection.js:85:12)
    at PacketParser.executeStart (/home/lexx/workspace/test/ship.place/node_modules/mysql2/lib/packet_parser.js:75:16)
    at Socket.<anonymous> (/home/lexx/workspace/test/ship.place/node_modules/mysql2/lib/connection.js:92:25)
    at Socket.emit (node:events:527:28)
    at addChunk (node:internal/streams/readable:315:12)
    at readableAddChunk (node:internal/streams/readable:289:9)
    at Socket.Readable.push (node:internal/streams/readable:228:10)


Экспериментально выяснил, что причина в попытке создать поле с массивом значений перечисления.

Как правильно реализовать такую модель с использование MariaDB?
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы