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

use*_*074 17 postgresql typeorm

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

它们正确存储在数据库中,但是当我使用 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;
}
Run Code Online (Sandbox Code Playgroud)

小智 29

以下是TypeORM 问题跟踪器的解决方案

共享我们使用的变压器:

/// ColumnNumericTransformer
export class ColumnNumericTransformer {
  to(data: number): number {
    return data;
  }
  from(data: string): number {
    return parseFloat(data);
  }
}
Run Code Online (Sandbox Code Playgroud)

在实体中:

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

  • 我现在已经为您添加了代码。今后链接外部资源时请遵循此模式。 (5认同)