位置: IT常识 - 正文

JavaScript数据类型BigInt实践之id数值太大,导致前后端交互异常(javascript数据类型分为哪两类)

编辑:rootadmin
项目开发中前后端数据交互常会使用id作为主键索引,通常id数值都不大,使用number类型就可以表示处理,但对于一些分布式id或其他情况,id数值太大且超过了JS的最大处理数(Math.pow(2, 53) = 9007199254740992)时就会存在精度问题:Math.pow(2, 53) + ...

推荐整理分享JavaScript数据类型BigInt实践之id数值太大,导致前后端交互异常(javascript数据类型分为哪两类),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript数据类型不包括,javascript数据类型不包括,javascript数据类型主要有,javascript数据类型转换,javascript数据类型,javascript数据类型分为哪两类,javascript数据类型分为哪两类,javascript数据类型分为哪两类,内容如对您有帮助,希望把文章链接给更多的朋友!

项目开发中前后端数据交互常会使用id作为主键索引,通常id数值都不大,使用number类型就可以表示处理,但对于一些分布式id或其他情况,id数值太大且超过了JS的最大处理数(Math.pow(2,53) =9007199254740992)时就会存在精度问题:Math.pow(2, 53) + 1 =9007199254740992;

实际例子:

当后端返回了这样一个id数值的数据,可以看到此数值已经超过了JS的最大处理数,丢失了精度,前端此时拿到的id值是错误的,此时涉及id的前后端数据交互,前端传输的参数id为1528669910682108000,后端无法根据此id找到对应的数据或者找出了其他数据导致异常

可以通过浏览器控制台Network的Preview和Response查看差异。Response中是原始响应数据,这里的id是正确的为1528669910682107904。而Preview中是浏览器接收到Response,通过JS转化为JavaScript对象形式,并格式化层级结构,以便查看,此时经过了JS处理,id数值精度丢失,看到的就是1528669910682108000这个错误id,前端请求后接收到的id也是这个错误id。

解决办法一:通过后端解决,把id转化为字符串类型返回

这样获取到的id就是正确的id了,但是后端有数据类型严格定义,不愿意改的话,那就靠我们前端来解决(方法二)

解决办法二:JavaScript新增的基础数据类型bigint就可以解决此类问题

将id转化为bigint类型,使用到json-bigint插件处理json数据中的这类数值

JavaScript数据类型BigInt实践之id数值太大,导致前后端交互异常(javascript数据类型分为哪两类)

npm install -S json-bigint 底层依赖于bignumber.js

然后在请求方法文件中importJSONBigInt from'json-bigint';

在请求函数中添加这一段转化代码,此时可以console.log出接收到的id为

其他地方不需要改动,这个时候前后端数据交互时id参数传输的时候会自动转化为字符串类型传输{id: "1528669910682107904"}

但是新问题又来了,现在是vue+element-ui项目,table表格绑定row-key="id",此时会报错

解决办法一:写一个全局转化函数

functiontransId(row) { return row.id.toString();}

然后在使用到id的地方调用此函数,转化为字符串类型去处理eg: (:row-key="transId")

解决办法二:在之前import JSONBigInt的地方添加代码:

constJSONBigIntStr = JSONBigInt({ storeAsString: true });

自动将BigNumber转化为字符串类型,然后修改转化代码

这样console.log出id就不为BigNumber类型的了,而是字符串类型,且id和后台的id能够对应得上

本文链接地址:https://www.jiuchutong.com/zhishi/303787.html 转载请保留说明!

上一篇:python怎么把数据保存为excel(Python怎么把数据倒着输出)

下一篇:静态链接(linux 静态链接)

  • 淘宝商城购物(淘宝商城 天猫)(淘宝商城购物车)

    淘宝商城购物(淘宝商城 天猫)(淘宝商城购物车)

  • 小米11支持ip68防水吗(小米支持ip68防水的手机)

    小米11支持ip68防水吗(小米支持ip68防水的手机)

  • 如何看qq会员还有多少天(如何看qq会员还有多久升级)

    如何看qq会员还有多少天(如何看qq会员还有多久升级)

  • 华为原装耳机坏了能去售后换吗(华为原装耳机坏了能换吗)

    华为原装耳机坏了能去售后换吗(华为原装耳机坏了能换吗)

  • 学习通电脑版怎么安装

    学习通电脑版怎么安装

  • 情侣空间如何查看前任(情侣空间如何查看被挡访客)

    情侣空间如何查看前任(情侣空间如何查看被挡访客)

  • 抖音的抖音钻卡怎么获得(抖音钻卡最不好得的是什么)

    抖音的抖音钻卡怎么获得(抖音钻卡最不好得的是什么)

  • 拼多多个人中心在哪(拼多多个人中心没有拼小圈)

    拼多多个人中心在哪(拼多多个人中心没有拼小圈)

  • 固定到任务栏是什么意思(从任务栏固定到桌面)

    固定到任务栏是什么意思(从任务栏固定到桌面)

  • 电脑怎么设置屏保时间(电脑怎么设置屏幕休眠)

    电脑怎么设置屏保时间(电脑怎么设置屏幕休眠)

  • 三星20+后期120hz和2K支持同时开吗(三星s20 120hz情况下能开2k吗)

    三星20+后期120hz和2K支持同时开吗(三星s20 120hz情况下能开2k吗)

  • s20港版和国行区别(s20港版区别)

    s20港版和国行区别(s20港版区别)

  • QQ空间进空间时的封面怎么换(qq空间进空间的效果在哪里调?)

    QQ空间进空间时的封面怎么换(qq空间进空间的效果在哪里调?)

  • 淘宝相册权限被禁止了怎么打开(手机淘宝的相册权限被设置了怎么办)

    淘宝相册权限被禁止了怎么打开(手机淘宝的相册权限被设置了怎么办)

  • 电信宽带没有网络怎么回事(电信宽带没有网了怎么查)

    电信宽带没有网络怎么回事(电信宽带没有网了怎么查)

  • 微信视频动态怎么发到朋友圈里(微信视频动态怎么保存到手机相册)

    微信视频动态怎么发到朋友圈里(微信视频动态怎么保存到手机相册)

  • 喷墨打印机不出墨怎么回事(喷墨打印机不出字)

    喷墨打印机不出墨怎么回事(喷墨打印机不出字)

  • 关联qq号能看到以前的消息吗(关联QQ号能看到对方消息吗)

    关联qq号能看到以前的消息吗(关联QQ号能看到对方消息吗)

  • 苹果手机支付无效怎么回事(iphone苹果支付无反应)

    苹果手机支付无效怎么回事(iphone苹果支付无反应)

  • ps怎么隐藏辅助线(ps隐藏小技巧)

    ps怎么隐藏辅助线(ps隐藏小技巧)

  • vivo手机密码忘了怎么办(vivo手机密码忘了怎么刷机)

    vivo手机密码忘了怎么办(vivo手机密码忘了怎么刷机)

  • 快手怎么上传5分钟视频(快手怎么上传50分钟视频)

    快手怎么上传5分钟视频(快手怎么上传50分钟视频)

  • 荣耀怎么设置导航键(荣耀怎么设置导航键功能)

    荣耀怎么设置导航键(荣耀怎么设置导航键功能)

  • 乐播投屏怎么设置才不卡顿(乐播投屏怎么设置5G信号)

    乐播投屏怎么设置才不卡顿(乐播投屏怎么设置5G信号)

  • ios13黑夜模式在哪里(教你打开ios13夜间模式教程)

    ios13黑夜模式在哪里(教你打开ios13夜间模式教程)

  • iphone可以投屏到ipad吗(iphone可以投屏到车上吗)

    iphone可以投屏到ipad吗(iphone可以投屏到车上吗)

  • 硬盘转速是什么意思(硬盘的转速有什么用)

    硬盘转速是什么意思(硬盘的转速有什么用)

  • PSD 格式文件除了 PS ,还能用什么软件打开?(psd格式文档)

    PSD 格式文件除了 PS ,还能用什么软件打开?(psd格式文档)

  • vue跳转页面后返回不刷新且记录历史滚动条停留位置 (实现了根据不同页面来设置是否刷新记录的功能)(vue 跳转页面)

    vue跳转页面后返回不刷新且记录历史滚动条停留位置 (实现了根据不同页面来设置是否刷新记录的功能)(vue 跳转页面)

  • cfdisk命令  用于磁盘分区(fdisk cfdisk)

    cfdisk命令 用于磁盘分区(fdisk cfdisk)

  • {dede:channel type='son'}无栏目调用同级栏目

    {dede:channel type='son'}无栏目调用同级栏目

  • php定义常量方法的区别(php定义变量的方法)

    php定义常量方法的区别(php定义变量的方法)

  • 如何计算土地增值税的增值额
  • 咨询服务业涉及税费
  • 小规模销售收入免税会计分录
  • 可供出售金融资产和长期股权投资
  • 综合所得减除费用标准
  • 免税苗木普通发票
  • 个人所得税报税孩子的夫妻双方都报吗
  • 投入实收资本需要缴纳什么税
  • 运输发票抵扣进项税率
  • 员工离职补偿需要计提吗
  • 房地产公司拆迁部岗位职责
  • 员工异地缴纳社保协议
  • 未做工程税费如何计算
  • 出口免税什么意思
  • 营业执照的注册地址怎么填
  • 报销凭证找不到了怎么办
  • 建筑企业一般纳税人提供建筑服务属于老项目
  • 刻章的发票怎么做分录
  • 专用发票地址写错字了能用吗
  • 建筑公司资源税的征税
  • 通行费如何填报表二
  • 增值税是售价乘以税率吗
  • 外方获得的利润怎么算
  • 企业支付宝收款码怎么申请
  • 二手车销售统一专票哪里开
  • 一台设备发票开来0.5台怎么做账?
  • 结转电费成本会计分录
  • 进入英雄联盟显示超频怎么办
  • 职工食堂的费用可以抵税吗
  • thinkphp 模型
  • 怎么实现增删改查
  • 平安树的养殖方法和浇水时间
  • 为什么连接无线网超时
  • 结转本月发生的费用
  • Http请求-hutool工具类的使用
  • 部门活动经费怎么算
  • 爬坑图片卡通
  • vue fragment标签
  • ChatGPT会让6个低端岗位失业
  • nginx部署前后端项目
  • 实收资本 增加
  • 应交税费下的科目设置
  • 出租房屋的房产税怎么算
  • 收到专票怎么入账
  • mongodb视频教程
  • 收到的销项负数发票如何申报
  • 样品开发计划
  • 工商年报中纳税总额怎么填
  • 合同负债 案例
  • 给保安买大衣算贿赂吗
  • 公司交的物业费计入什么会计科目
  • 应交增值税为什么在借方
  • 所得税 补缴
  • 财务费用包括什么项目
  • 进口关税如何记账
  • 哪些个体户要报残保金
  • 盈余公积的会计分录
  • 有形资产的例子
  • 商贸公司会计成本核算方法
  • 每月分红会计分录
  • 老项目简易征收税率
  • sql常用语句大全简书
  • sql server使用教程(图文)
  • Windows Server 2008如何设置自动获取ip?设置自动获取ip教程
  • xp系统直接开机
  • vmware虚拟机步骤
  • 删除xp本地保存的视频
  • mac上safari
  • win10 系统
  • noads.exe - noads是什么进程 有什么用
  • 电脑裸奔可以吗
  • WIN10系统中WPS字体颜色浅
  • python如何搭建环境
  • Eclipse开发工具安装
  • Clipboard.js 无需Flash的JavaScript复制粘贴库
  • android 子线程间通信
  • jquery的点击事件怎么写
  • ppr管材税收编码
  • 百旺税控客服电话
  • 外经证核销在公司所在地还是在项目所在地
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设