使用TypeORM QueryBuilder()查询数据库时,我得到:
{type: 'decimal', precision: 5, scale: 2 }
value: number
以X为存储在数据库中的值。
我的实体最初是类型;
{type: 'real'}
value: string
自从我将其更改为:
'float'
value: string
并尝试:
export class Entity extends BaseEntity {
@Column('float')
value: string;
}
所有三种类型均引发相同的错误。但是,如果数据库中的值没有小数位-则可以正常工作。
我正在运行Postgres v11.4,TypeORM v0.2.18和Nest.js v6.5.3
实体定义:
const current = await this.entityRepo
.createQueryBuilder('uL')
.leftJoin('uL.user', 'user')
.leftJoinAndSelect('uL.currentLevel', 'cL')
.where('user.id = :id', { id: userId })
.getOne();
查询:
WidgetName
我希望该实体返回的值具有正确的十进制间距。
答案 0 :(得分:1)
在更新为 TypeORM v0.2.18 后,我遇到了同样的错误:PostgreSQL实际上并不知道“数字”。有关更多信息,请参见 Microsoft GitHub
上的 typeorm 存储库更改了此内容
@Column()
value: number;
...对此:
@Column({type: 'real'})
value: string;
我忘记了迁移;是吗?
重要:运行迁移以实际应用这些更改:
npm run typeorm:migrate ChangedNumbersTypeToReal
npm run build; npm run typeorm:run
现在一切都应该很好。
您可以在GitHub上阅读有关使用TypeORM进行迁移的更多信息