使用Axios查询后端数据Number精度丢失

在进行页面CRUD操作时,发现新增数据的删除功能失效,原因是前端axios请求时,由于JSON.stringify()导致超过19位的long类型ID(如雪花算法生成的ID)精度丢失。前端接收到的ID尾数变为0。问题的根本在于Number在解析超过19位的数字时精度丢失。为解决此问题,建议可以缩短生成ID的位数或者改为使用String类型的UUID作为ID,以避免精度问题。
摘要由CSDN通过智能技术生成

最近写一个页面的CRUD,发现新增的数据删除失败。遂记录一下

问题排查:

测试后端接口,该条数据返回的id和数据库一致

112098591526490112

但是查看前端日志发现前端获取到的该数据的id为

0: {id: 112098591526490110}

最后一位变成了0。显然是调用axios时出现了精度丢失。

问题原因:

        axios传送数据时JSON.stringify()化,而前端接到数据后,需要将数据解析,而在解析的过程中会导致Number超过19位后精度丢失。

解决方法:

        由于本项目后端使用的是雪花算法生成的long类型的id,超过了19位;故可以考虑生成的id位数缩短或者生成String类型的id(使用UUID)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值