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

浪子不回头ぞ 提交于 2019-12-04 20:44:02

最近我遇上了如题这个问题,后端用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就行 
问题解决
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!