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

  • 如何解除word文档保护密码(如何解除word文档锁定的内容)

    如何解除word文档保护密码(如何解除word文档锁定的内容)

  • 苹果手机频繁断信号(苹果手机频繁断流)

    苹果手机频繁断信号(苹果手机频繁断流)

  • 活体人脸识别总是失败(人脸识别活体检测失败是什么)

    活体人脸识别总是失败(人脸识别活体检测失败是什么)

  • 物联网的组成包含哪些(物联网由哪几部分组成?简述它们的作用与相互关系)

    物联网的组成包含哪些(物联网由哪几部分组成?简述它们的作用与相互关系)

  • 即能向主机输入数据又能向主机输出数据(既能向主机输入数据又能接受主机输出数据的是)

    即能向主机输入数据又能向主机输出数据(既能向主机输入数据又能接受主机输出数据的是)

  • 变频和工频是什么意思(变频和工频的区别)

    变频和工频是什么意思(变频和工频的区别)

  • 荣耀20pro拍照防抖哪里打开(荣耀20pro拍照防抖吗)

    荣耀20pro拍照防抖哪里打开(荣耀20pro拍照防抖吗)

  • 手机飞行模式可以收到信息吗(手机飞行模式可以收到短信吗)

    手机飞行模式可以收到信息吗(手机飞行模式可以收到短信吗)

  • iphonex nfc在哪(iphonex的nfc模块在哪)

    iphonex nfc在哪(iphonex的nfc模块在哪)

  • iphone spcs是指什么(苹果spu是什么意思)

    iphone spcs是指什么(苹果spu是什么意思)

  • aov网和aoe网的区别(aoe网和aov网的区别与联系)

    aov网和aoe网的区别(aoe网和aov网的区别与联系)

  • google手机号码无法进行验证是怎么回事(google电话号码没办法验证怎么办)

    google手机号码无法进行验证是怎么回事(google电话号码没办法验证怎么办)

  • access是一个什么型数据库(access是干啥用的)

    access是一个什么型数据库(access是干啥用的)

  • 苹果九键怎么换行(苹果九键怎么换行打字)

    苹果九键怎么换行(苹果九键怎么换行打字)

  • 手机qq好友怎么分类(手机qq好友怎么恢复删除掉的好友)

    手机qq好友怎么分类(手机qq好友怎么恢复删除掉的好友)

  • 手机qq空间背景怎么设置透明(手机QQ空间背景音乐自动播放)

    手机qq空间背景怎么设置透明(手机QQ空间背景音乐自动播放)

  • vivox27手机防水吗(x27vivo防水不)

    vivox27手机防水吗(x27vivo防水不)

  • 手机号暂停服务啥意思(手机号暂停服务了交了话费还能用么)

    手机号暂停服务啥意思(手机号暂停服务了交了话费还能用么)

  • iwatch蜂窝版要插卡吗(iwatch蜂窝版要插卡要收费吗)

    iwatch蜂窝版要插卡吗(iwatch蜂窝版要插卡要收费吗)

  • 抖音如何双向关注好友(抖音双向取消关注是什么意思)

    抖音如何双向关注好友(抖音双向取消关注是什么意思)

  • vivox27带面部解锁吗(vivox27不可以面部解锁吗?)

    vivox27带面部解锁吗(vivox27不可以面部解锁吗?)

  • 陌陌语音聊天在哪(陌陌语音交友在哪)

    陌陌语音聊天在哪(陌陌语音交友在哪)

  • 华为p30多久充满电(华为P30多久充满电)

    华为p30多久充满电(华为P30多久充满电)

  • 原始凭证如何粘贴到记账凭证后面
  • 法人私户转公户怎么操作
  • 注册资本为0的企业
  • 应付职工薪酬为什么不属于金融负债
  • 一般纳税人厂房出租怎么开票
  • 非财政补助结余分配期末有余额吗
  • 股东经济性质怎么填
  • 会计差错更正流程
  • 企业所得税的申报方式
  • 增值税专用发票抵扣期限
  • 小规模纳税人购车可以抵扣多少税
  • 企业员工报销法律规定
  • 金蝶软件如何设置单价小数点
  • 商品税目编码表查询
  • 发票专用章只能盖一个
  • 应收未收的利息如何处理
  • 滞留发票一般怎么开具
  • 税款负担方式是什么
  • 兼营小规模纳税人增值税优惠
  • 什么发票 既可以抵扣又可以退税
  • 采购材料差旅费怎么入账
  • 财产清查账务处理步骤
  • 上月销项税额错了怎么修改凭证?
  • 总账会计需要做账吗
  • 应交税费的余额怎么计算
  • 增值税发票自查报告
  • 报销客户车费会计分录怎么写?
  • 工会经费的会计分录2022
  • win11怎么下载手机应用
  • pb估值是什么意思
  • 期末未抵扣数
  • 跟银行借入长期存款
  • 制造业企业资金管理
  • 差额征税账务处理规定
  • 取得土地使用权的方式
  • 有限责任公司股东对公司债务承担
  • php浮点数四舍五入
  • php代码生成
  • 职教费可以抵扣进项么
  • qt+opencv教程
  • 【深度学习】模型过拟合的原因以及解决办法
  • php用mysql连接数据库并查询
  • 定期存款怎么入门
  • 公司认缴出资怎么交税
  • 基本户和零余额可以是一个账号么
  • 代开发票流程该是什么?
  • 企业所得税的步骤
  • 苗圃的账务处理
  • 车间拆除施工方案
  • 结汇的汇率差异怎么算
  • 被列为经营异常的企业合法吗
  • 处置存货损失应该放哪个科目
  • 没有按时对账
  • 养老保险产生的利息怎么来的
  • 旅游业营业税税率
  • 建账的基本步骤
  • 账簿的保管年限有哪些规定
  • sql server 2019自定义安装教程
  • 分页式存储管理代码
  • mysql 死锁解决
  • ubuntu16设置启动项
  • freenas11.2安装教程
  • 预装win10
  • centos设置终端快捷键
  • windows怎么拨号
  • mac系统快速入门
  • linux系统基础教程
  • cocos2dx游戏开发
  • Cocos2dx 疯狂跑酷(CrazyRun)游戏项目解析
  • bat脚本自动点击按钮
  • angularjs1.5
  • unity3d创建模型
  • 在python中的用法
  • bootstrap-
  • javascript获取数据类型
  • python 字典的字典
  • 天津电子税务局官网登录入口网页版
  • 印花税计征周期
  • 海员证办理流程需要什么手续时间多长
  • 珠海市高新区国土局局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设