TypeORM - Decimal column values returned as strings instead of decimal / numbers

Viewed 5290

I dont know why, but but column values always get returned as strings instead of decimals and I dont know how to fix this issue.

They get stored properly in the database, but when I query using QueryBuilder, the results are shown as strings.

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;
}

1 Answers

Here is a solution from the TypeORM issue tracker:

Sharing a transformer we use:

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

In entity:

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