当我对 node.js 服务器上的 postgresql 数据库运行查询时,我得到的值是变量类型 字符串 实际上它在postgresql数据库中是 十进制 。
我不确定为什么我的小数或甚至bigInts作为类型字符串返回。我使用knex作为我的ORM,如果这有所作为。到目前为止,我在网上看到的内容并不是很清楚该做什么,似乎这种情况似乎是自动发生以保持精确度???
最好的解决办法是什么?是否最好使用parseFloat将我从查询返回的字符串变量转换为小数?
答案 0 :(得分:5)
decimal
和bigint
类型都可能包含太大而无法“适应”JavaScript Number
中的值:
Number.MAX_SAFE_INTEGER
(JS):9007199254740991 bigint
: -9223372036854775808 to 9223372036854775807 decimal
:小数点前最多131072位;小数点后最多16383位数 如果您确定数据库中的值适合Number
,您可以转换它们(我不知道Knex,但它可能有某种钩子系统,您可以使用它转换从数据库中检索的数据),或更改数据库架构以包含“较小”的行类型。
或者,您也可以使用各种"big integer" Node包。