使用 TypeORM 在 MySQL 中将浮点数保存为整数

Sa1*_*m0n 3 mysql orm node.js typeorm nestjs

我正在为我的 Nest.js 后端应用程序使用 TypeORM。当我尝试将实体保存在数据库中时:

await this.dayRepository.save({
   price: item.price,
   ... other columns
});
Run Code Online (Sandbox Code Playgroud)

我的价格是浮动的,该浮动作为整数保存在数据库中 - 总是被截断(3.99 舍入到 3,5.56 舍入到 5 等)。我什至尝试这个:

await this.dayRepository.save({
   price: 3.99,
   ... other columns
});
Run Code Online (Sandbox Code Playgroud)

它还将数据库中的价格列保存为 3。我尝试将数据库中的价格列声明为 float 和 double - 这些都不起作用。我做错了什么?或者可能是数据库有问题?

J.F*_*.F. 5

根据TypeORM 文档,您可以检查mysql.

因此,您可以在实体中声明如下所示的值:

@Column('decimal', { precision: 6, scale: 2 })
price: number
Run Code Online (Sandbox Code Playgroud)

其中precisionscale是您选择的数字,但我认为您希望scale为 2。

你可以检查这个文档

小数(精确数字)列的精度(仅适用于小数列),它是为值存储的最大位数。

小数(精确数字)列的小数位数(仅适用于小数列),表示小数点右侧的位数,且不得大于精度。

通过此实体配置,您可以存储带小数的值。