最近写一个页面的CRUD,发现新增的数据删除失败。遂记录一下
问题排查:
测试后端接口,该条数据返回的id和数据库一致
112098591526490112
但是查看前端日志发现前端获取到的该数据的id为
0: {id: 112098591526490110}
最后一位变成了0。显然是调用axios时出现了精度丢失。
问题原因:
axios传送数据时JSON.stringify()化,而前端接到数据后,需要将数据解析,而在解析的过程中会导致Number超过19位后精度丢失。
解决方法:
由于本项目后端使用的是雪花算法生成的long类型的id,超过了19位;故可以考虑生成的id位数缩短或者生成String类型的id(使用UUID)。