位置: 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 静态链接)

  • 淘宝7天内没发货怎么办(淘宝7天内没发货的怎么处理)

    淘宝7天内没发货怎么办(淘宝7天内没发货的怎么处理)

  • m1901f7e红米啥型号(红米m1901f7c)

    m1901f7e红米啥型号(红米m1901f7c)

  • 苹果6s plus手机特别烫的原因(苹果6s plus手机壁纸)

    苹果6s plus手机特别烫的原因(苹果6s plus手机壁纸)

  • ios12蜂窝数据无法还原(苹果12开了蜂窝数据1x)

    ios12蜂窝数据无法还原(苹果12开了蜂窝数据1x)

  • 抖音怎么拍不了视频了(抖音怎么拍不了同款)

    抖音怎么拍不了视频了(抖音怎么拍不了同款)

  • 电话卡不用了不注销会有影响吗(电话卡不用了不注销可以吗)

    电话卡不用了不注销会有影响吗(电话卡不用了不注销可以吗)

  • 手机不小心入水怎么办(手机不小心进了点水)

    手机不小心入水怎么办(手机不小心进了点水)

  • 微信登录的时候显示英文(微信登录的时候显示在另一台登录怎么办)

    微信登录的时候显示英文(微信登录的时候显示在另一台登录怎么办)

  • 小米手机通讯录字体大小怎么调(小米手机通讯录怎么导入到新手机)

    小米手机通讯录字体大小怎么调(小米手机通讯录怎么导入到新手机)

  • 操作系统负责管理计算机的什么(操作系统负责管理什么)

    操作系统负责管理计算机的什么(操作系统负责管理什么)

  • 华为p40如何截屏手机屏幕(华为p40如何截屏视频)

    华为p40如何截屏手机屏幕(华为p40如何截屏视频)

  • 红米k20pro微信视频美颜吗(红米k20pro微信视频听不到对方讲话)

    红米k20pro微信视频美颜吗(红米k20pro微信视频听不到对方讲话)

  • oppo如何强制分屏(oppo手机如何强行分屏)

    oppo如何强制分屏(oppo手机如何强行分屏)

  • 计算机病毒是源程序吗(计算机病毒是源程序还是特殊小程序)

    计算机病毒是源程序吗(计算机病毒是源程序还是特殊小程序)

  • iphone照片live怎么拍(苹果照片 live)

    iphone照片live怎么拍(苹果照片 live)

  • 微信主题怎么变成黑色(微信主题怎么变成粉色)

    微信主题怎么变成黑色(微信主题怎么变成粉色)

  • 小米手环可以连接华为吗(小米手环可以连蓝牙耳机听歌吗)

    小米手环可以连接华为吗(小米手环可以连蓝牙耳机听歌吗)

  • 手机怎样查看别人的qq密码(手机怎样查看别人的聊天记录)

    手机怎样查看别人的qq密码(手机怎样查看别人的聊天记录)

  • vivox21运动计步在哪(vivo运动计步在哪)

    vivox21运动计步在哪(vivo运动计步在哪)

  • qq怎么关语音自动转文体(qq语音怎么关自己声音)

    qq怎么关语音自动转文体(qq语音怎么关自己声音)

  • vivo手电筒在哪里设置(vivo手电筒在哪里找到)

    vivo手电筒在哪里设置(vivo手电筒在哪里找到)

  • 荣耀手环功能怎么使用(荣耀手环功能怎么用)

    荣耀手环功能怎么使用(荣耀手环功能怎么用)

  • 计算机二级准考证下载打不开(计算机二级准考证什么时候打印9月)

    计算机二级准考证下载打不开(计算机二级准考证什么时候打印9月)

  • ipad为什么下载软件需要验证(ipad为什么下载软件要钱)

    ipad为什么下载软件需要验证(ipad为什么下载软件要钱)

  • 安卓恢复对方微信撤回消息(安卓系统恢复微信好友)

    安卓恢复对方微信撤回消息(安卓系统恢复微信好友)

  • 股权转让中土地房产占比较大时怎么交税
  • 小型中央空调机
  • 申请纳税申报怎么申报
  • 补交以前年度车船税
  • 发票打印机贵吗
  • 合同每三个月付一次款
  • 小规模纳税人开专票税率是1%还是3%
  • 付给其他公司的利息怎么做账
  • 汽油税种
  • 股权转让以前年度怎么算
  • 采购退货退款怎么做账
  • pdf格式发票怎么打印标准大小
  • 清包工程增值税税率
  • 航空公司按照一次性收费
  • 自行建造厂房一座,现已完工,经验收后交付费用
  • 金蝶k3币别汇率类型设置
  • 培训学校税收筹划
  • 销项负数票需要把之前的票退回吗
  • 收到财政拨款开什么票据
  • 公司如何确定总股本
  • 库存商品的核算方法
  • 软件企业收到即征即退分录
  • 装修费可以作为开办费吗
  • 工商年报纳税总额怎么填写才正确
  • 2021年windows最新版本
  • 房地产开发企业增值税怎么算
  • 销售自己使用过的物品的税率
  • 电脑的c盘变红怎么回事
  • php 反射
  • 调整上月费用科目
  • windows资源管理器未响应怎么办
  • php判断https
  • 收到法院的案件款应该怎么做帐
  • 什么叫即期结汇
  • 特种商品劳务税
  • vue+echarts
  • dhclient卡住
  • php目录结构
  • 兼职人员的劳务费标准
  • python输入三个数输出最小的
  • 收到电子银行承兑汇票计入什么科目
  • ps调色的作用
  • 公司购买烟酒怎么入账
  • db2 knowledge center
  • python元数据
  • 支付国外佣金的税率多少
  • 预扣预缴和汇算清缴是什么意思
  • mysql显示数据库中的表
  • 如何查询开出的电子发票
  • 无票利息支出可抵税吗
  • 外经证预缴税款的附加税所属期写错怎么办
  • 以土地使用权投资入股是否缴纳增值税
  • 如何计提材料跌价准备
  • 长期股权投资应计提减值准备的金额
  • 电脑配件入账
  • 收到发票冲红怎么做分录
  • 营改增后房地产企业增值税如何核算
  • 试生产期间的收入如何做账
  • 以前年度多计提了费用
  • 发票报销抵扣税点是给谁
  • 公司股东的主要几种分类
  • 百望开发票
  • 税控盘服务费什么样的发票可以抵扣
  • 公司活动费用分录
  • mysql5624安装教程
  • tcpdump的用法
  • Windows10下mysql 5.7.17 安装配置方法图文教程
  • 域怎么改名
  • linux系统中常用的五种文件类型
  • mac如何全屏窗口
  • centos7启动卡在界面
  • centos怎么安装yum源
  • win10怎么看电池寿命
  • js链式编程的原理
  • dos命令中删除文件命令有哪些
  • python3遍历
  • TextWatcher实现一键清空EditText
  • 税控盘离线开票时间怎么查
  • 融资租赁公司购进车辆账务处理
  • 怎么打印个人所得税扣缴申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设