some.entity.ts
amount:number
但是当我在我的帖子中存储非常大的数据时,它会抛出错误"整数超出范围">
我的问题是如何使用typeorm将Big Int存储为psql中的类型
在装饰器中定义类型bigint
@Column,
@Column({type: 'bigint'})
columnName: string;
注意:基于TypeOrm文档bigint
映射到string
。
伊斯兰教@Riajul伟大的共鸣!
作为他的回答的补充,如果你想在PrimaryGeneratedColumn
中存储bigint
,你应该做到以下几点:
@PrimaryGeneratedColumn( 'increment', {type: 'bigint'} )
id: number;
只需将{ bigNumberStrings: false }
添加到TypeORM的配置中,例如:
TypeOrmModule.forRoot({
bigNumberStrings: false,
...config.database,
}),
然后 bigint 将返回数字类型。
我使用了列转换器:
export class ColumnNumberTransformer {
public to(data: number): number {
return data;
}
public from(data: string): number {
// output value, you can use Number, parseFloat variations
// also you can add nullable condition:
// if (!Boolean(data)) return 0;
return parseInt(data);
}
}
然后在实体中:
@Entity('accounts')
export class AccountEntity extends BaseEntity {
@Column({
type: 'bigint',
nullable: false,
transformer: new ColumnNumberTransformer()
})
public balance: number;
}