В модели пользователя нужно сделать поле с его правами:
{
...,
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?