首页 > 解决方案 > 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;
}

标签: postgresqltypeorm

解决方案


这是来自 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;

推荐阅读