在float类型上查询时出现“ QueryFailedError:整数的无效输入语法:”

时间:2019-08-07 09:49:57

标签: postgresql nestjs typeorm

使用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

我希望该实体返回的值具有正确的十进制间距。

1 个答案:

答案 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进行迁移的更多信息