JavaScript调用mysql查询bigint数据精度失真解决方案

最近我遇上了如题这个问题,后端用node.js写了一个读取mysql数据的接口,之前使用了很久都没发现什么问题,在查询订单表的订单ID时返回的值却是错的

正确的值是

19102818002800002

但是js里返回的值却是 

19102818002800000

最后一位不一定是0,但是总是失真,由于订单ID我在后续的多个地方重复使用,导致后面所有用到这个值的地方全是错的。

发现结果有错以后,层层回溯才终于找到了这个错误源。

开始时没有想明白是哪里的问题,我尝试将这个数据改短一点后发现返回的值就对了,由此诊断出这里应该是数值过大导致的精度失真

 

 看了下数据库结构 ID是bigint类型的

想来想去只能是把这个值查询出来以后立刻赋值成string类型的,不修改接口,直接修改SQL

select *from order_info
修改成
select *,concat(id) ids from order_info
这里把id查询出来以后 将获取的值赋给 ids 这个变量,返回的josn中 我们只用res_data.ids 替代id就行 
问题解决

posted on 2019-11-18 15:39  隔壁小老王  阅读(1349)  评论(0编辑  收藏  举报

导航