• 问题

    • 雪花算法生成的id作为主键时,因为其长度为19位
    • 而前端JS一般能处理16位,如果不处理的话在前端会造成精度丢失,最后两位会变成00
  • 后端 解决方式

    • 直接把id类型改为String就行,使用JackSon包的注解
    • 对应的实体类主键属性加入注解@JsonSerialize
    @JsonSerialize(using = ToStringSerializer.class)
    @TableId
    private Long id;
    
  • 前端 解决方式

    • 前端使用 json-bigint 模块进行处理,一般都是用axios数据请求
    npm install json-bigint
    
    #代码封装
    axios.defaults.transformResponse = [
      function (data) {
        const json = JSONBIG({
          storeAsString: true
        })
        const res = json.parse(data)
        return res
      }
    ]
    
    或 
    
    axios.defaults.transformResponse = [
        function (data) {
            const json = JsonBigint({
                storeAsString:true
            })
            const res = json.parse(data)
            return res
        }
    ]
    
    axios.create({
        baseURL: 'http://baidu.com',
        timeout: 5000,
        timeoutErrorMessage: '请求时间过长,请联系后端或者优化请求',
    })