Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I don't know why, but but column values always get returned as strings instead of decimals and I don't 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;
}
like image 714
user16780074 Avatar asked Sep 09 '25 18:09

user16780074


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;
like image 135
jefferson dos santos aguiar Avatar answered Sep 13 '25 07:09

jefferson dos santos aguiar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!