Я хочу сопоставить столбец битовых данных Mysql со свойством boolean
с TypeOrm. Я использую инфраструктуру NestJs и не могу понять, как это сделать. Насколько я видел, тип данных Mysql bit
не поддерживается платформой, но я не знаю, как это обойти. Согласно этой дискуссии должно быть достаточно объявить логическое типизированное поле в сущности и не украшать его ничем, кроме @Column
:
@Column()
enable: boolean;
Однако, с этим я получаю значение true
в каждом отдельном экземпляре объекта. Также попытался добавить import 'reflect-metadata';
либо в сущности, либо в app.module.ts
, с тем же результатом.
Другой вариант - использовать тип tinyint
:
@Column({
type: 'tinyint',
})
enable: boolean;
С этим я получаю данные такого типа, где в поле data
хранится текущее логическое значение:
"enable":{"type":"Buffer","data":[1]}
Нужно ли делать какой-то хак, чтобы преобразовать это в правильное логическое значение, или есть другой более чистый выбор, чтобы сделать это?
РЕДАКТИРОВАТЬ 1
Изменение типа данных столбца БД на int
, кажется, приводит к правильному выводу. Однако это не самое правильное решение, так как тип bit
- тот, который лучше всего подходит здесь.
Используемые версии:
- "@ nestjs / typeorm": "5.1.0"
- "typeorm": "0.2.13"
- "отражать-метаданные": "0,1.12"
- Mysql Двигатель: 5.7.25
РЕДАКТИРОВАТЬ 2
Я пытался обновить typeorm
связанные пакеты до их последних версий, то же самое продолжается. Также с двигателем Mysql 8.0. Пробовал также с этими декораторами:
@Column()
@IsBoolean()
enable: boolean;
Я в Xubuntu 16.04, кстати.