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

  • ae cc是什么版本(ae cc哪个版本好用)

    ae cc是什么版本(ae cc哪个版本好用)

  •  笔记本电脑如何上网课(笔记本电脑如何截屏)

    笔记本电脑如何上网课(笔记本电脑如何截屏)

  • 华为插头充苹果会怎样(华为手机充电插头苹果手机能用吗)

    华为插头充苹果会怎样(华为手机充电插头苹果手机能用吗)

  • qq管理员怎么改头衔(qq管理员怎么改成别的)

    qq管理员怎么改头衔(qq管理员怎么改成别的)

  • 电脑待机黑屏按什么键恢复(电脑待机黑屏按什么键恢复亮屏设置)

    电脑待机黑屏按什么键恢复(电脑待机黑屏按什么键恢复亮屏设置)

  • b-d7电池是什么手机(b-d9电池是什么型号)

    b-d7电池是什么手机(b-d9电池是什么型号)

  • 电脑电源电压不稳有什么症状(电脑电源电压不够会出现什么情况)

    电脑电源电压不稳有什么症状(电脑电源电压不够会出现什么情况)

  • 不属于幻灯片母版视图的是(不属于幻灯片版式的是)

    不属于幻灯片母版视图的是(不属于幻灯片版式的是)

  • 淘宝活动外围和会场的区别(淘宝外围活动怎么报名)

    淘宝活动外围和会场的区别(淘宝外围活动怎么报名)

  • fhd+分辨率是什么意思(fhd+分辨率是什么意思1001fhd 分辨率是什么意思)

    fhd+分辨率是什么意思(fhd+分辨率是什么意思1001fhd 分辨率是什么意思)

  • 门户网站是什么意思(门户网站是什么新媒体类型)

    门户网站是什么意思(门户网站是什么新媒体类型)

  • 微信被解绑手机号,是否能正常使用(微信被解绑手机号怎么找回)

    微信被解绑手机号,是否能正常使用(微信被解绑手机号怎么找回)

  • 小锅盖有信号但收不到台怎么办(小锅盖有信号但没反应)

    小锅盖有信号但收不到台怎么办(小锅盖有信号但没反应)

  • 退微信群群主和其他人会知道吗(微信群主退群这个群还在吗)

    退微信群群主和其他人会知道吗(微信群主退群这个群还在吗)

  • 蓝牙耳机充电时红灯亮一会就灭了(蓝牙耳机充电时闪红灯什么意思)

    蓝牙耳机充电时红灯亮一会就灭了(蓝牙耳机充电时闪红灯什么意思)

  • 蓝牙传输文件在哪里查看(蓝牙传输文件在哪里打开)

    蓝牙传输文件在哪里查看(蓝牙传输文件在哪里打开)

  • 新版微信没有漂流瓶吗(新版微信没有漂浮功能)

    新版微信没有漂流瓶吗(新版微信没有漂浮功能)

  • 12306改签退的钱什么时候到账(12306改签退的钱不一样)

    12306改签退的钱什么时候到账(12306改签退的钱不一样)

  • 华为耳机2和3的区别(华为耳机freebuds3和2的区别)

    华为耳机2和3的区别(华为耳机freebuds3和2的区别)

  • 拼多多退款申请被拒绝(拼多多退款申请通过,订单已取消)

    拼多多退款申请被拒绝(拼多多退款申请通过,订单已取消)

  • 苹果手机的小圆点怎么关闭(苹果手机的小圆点不见了怎么找回)

    苹果手机的小圆点怎么关闭(苹果手机的小圆点不见了怎么找回)

  • airpods充电盒大小尺寸(airpods充电盒大小尺寸图)

    airpods充电盒大小尺寸(airpods充电盒大小尺寸图)

  • 运营商设置更新怎么取消(iphone如何关闭运营商设置更新)

    运营商设置更新怎么取消(iphone如何关闭运营商设置更新)

  • 华为p30开发者选项在哪(华为P30开发者选项在哪里打开)

    华为p30开发者选项在哪(华为P30开发者选项在哪里打开)

  • 微信拆红包声音怎么设置(微信拆红包声音怎么关掉小米手机)

    微信拆红包声音怎么设置(微信拆红包声音怎么关掉小米手机)

  • paytime.exe - paytime是什么进程 有什么用

    paytime.exe - paytime是什么进程 有什么用

  • 5月份企业所得税
  • 累进税率的形式有全额累进税率和什么两种
  • 中华人民共和国国歌
  • 什么是增值税发票图片
  • 记账凭证附单据是有哪些
  • 国外客户付款方式
  • 防雨棚设计规范
  • 个人房产租金收入如何纳税申报
  • 简易征收纳税的税率为多少?
  • 专项土地补偿款怎么入账?
  • 未开发票收入交增值税怎么做账?
  • 劳务费增值税发票是劳务单位开吗
  • 冲销去年费用
  • 税务咨询费用
  • 委托加工物资怎么入账
  • 兼营销售的销售额的确定
  • 1697510660
  • macOS Big Sur 11.0.1(20B29)正式版发布(附可使用的Mac机型)
  • 房地产公司的存货分析
  • 如何在电脑管家里把健康小程序提取出
  • 商业自持店铺出租合法吗
  • 如何通过路由器查看宽带账号密码
  • 企业税计算方法
  • lsass.exe是什么进程
  • 退休后工作单位填什么内容
  • 缴纳增值税的会计处理方法
  • 公司挂靠社保的人员需要申报个人所得税吗?
  • Yii2超好用的日期和时间组件(值得收藏)
  • 酒吧会计要做些什么
  • 发票复核和收款人未填写
  • PHP+MySql+jQuery实现的"顶"和"踩"投票功能
  • 广告代理费收取比例
  • 开源项目排行榜
  • 大前端最新
  • java中通配符作用
  • 车间主要有哪些事故风险
  • 详细步骤怎么写
  • 已经结账的账目怎么冲红
  • python中的threading模块
  • 一条sql在mysql中经过怎样的过程
  • 合并报表长投和股本抵消后资产负债表怎么处理
  • 电子承兑汇票到期提示付款后多久到账
  • sql server 2008 r2数据库备份
  • 非独立核算门市部销售自产应税消费品
  • 筹资活动产生的现金流量净额减少说明什么
  • 成品油发票的六个问答
  • 以前年度损益调整科目编码是多少
  • 法律是如何规定家用家具折旧
  • 出口退税 账务处理
  • 公司车辆保养计入什么费用
  • 企业被收购会产生哪些税
  • 收据注明实际到账时间
  • 员工报销停车费计入什么科目
  • 成本类科目会计处理分录
  • 提取坏账会计分录怎么写
  • 预收账款账务处理流程图
  • 建账的基本原则是什么
  • 账户与会计科目有什么联系与区别?
  • mysql查询语句菜鸟教程
  • mysql删除重复的id但各保留一个
  • Win10 Mobile 10563预览版微软官方模拟器下载
  • win8怎么禁用强制驱动签名
  • xp电脑内存占用过高怎么办
  • 无损音乐如何播放
  • xp无法加载配置文件
  • shell下同时读取多个文件的方法
  • 第三方解决方案
  • apache部署项目
  • jQuery基于xml格式数据实现模糊查询及分页功能的方法
  • android读写sd卡权限
  • 批处理显示
  • oracle中提取日期时间的特定部分
  • 右键打开方式里没有word
  • js生成随机数函数
  • node.js中http模块和url模块的简单介绍
  • No active compatible AVD's or devices found. Relaunch this configuration after connecting a device o
  • android,ios,apicloud 同时开发两个平台应用,方便简单一体化,自带svn,云编译,中文IDE
  • 国税局事业编制和公务员哪个比较好
  • 苏州买房退契税政策2023
  • etc可以抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设