TypeORM - 以字符串形式返回十进制列值,而不是十进制/数字

问题描述 投票:0回答:3

我不知道为什么,但是列值总是以字符串而不是小数形式返回,我不知道如何解决这个问题。

它们正确存储在数据库中,但是当我使用 QueryBuilder 查询时,结果显示为字符串。

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity({name:"collectionstats"})
export class CollectionStats {
  @PrimaryGeneratedColumn()
  id: number;
  @Column("decimal")
  one_day_volume: number;
  @Column("decimal")
  one_day_change: number;
  @Column("decimal")
  one_day_sales: number;
  @Column("decimal")
  one_day_average_price: number;
  @Column("decimal")
  seven_day_volume: number;
  @Column("decimal")
  seven_day_change: number;
  @Column("decimal")
  seven_day_sales: number;
  @Column("decimal")
  seven_day_average_price: number;
  @Column("decimal")
  thirty_day_volume: number;
  @Column("decimal")
  thirty_day_change: number;
  @Column("decimal")
  thirty_day_sales: number;
  @Column("decimal")
  thirty_day_average_price: number;
  @Column("decimal")
  total_volume: number;
  @Column("decimal")
  total_sales: number;
  @Column("decimal")
  total_supply: number;
  @Column("decimal")
  count: number;
  @Column("decimal")
  num_owners: number;
  @Column("decimal")
  average_price: number;
  @Column("decimal")
  num_reports: number;
  @Column("decimal")
  market_cap: number;
  @Column("decimal")
  floor_price: number;
}

postgresql typeorm
3个回答
27
投票

这是来自 TypeORM 问题跟踪器的 解决方案

分享我们使用的变压器:

/// ColumnNumericTransformer
export class ColumnNumericTransformer {
  to(data: number): number {
    return data;
  }
  from(data: string): number {
    return parseFloat(data);
  }
}

在实体中:

 @Column('numeric', {
    precision: 7,
    scale: 2,
    transformer: new ColumnNumericTransformer(),
  })
  public myNumericColumn: number;

1
投票

对我来说,杰斐逊的答案不起作用。

我正在使用 TypeOrm 查询生成器并执行此操作:

.select('myNumericColumn :: float')


0
投票

Jefferson dos santos aguiar 展示的解决方案非常完美!!!

恭喜...

© www.soinside.com 2019 - 2024. All rights reserved.