办法一:让后端把id传成字符串类型;
办法二:用jsonBig转换为bigInt数字类型:
1.在项目根目录打开命令行输入命令安装jsonBig插件:
npm install json-bigint@1.0.0
2.在封装的请求中使用插件,核心是在uni.request的配置项添加{dataType: 'String'}配置(因为默认会使用JSON.parse()解析从后端的来的数据),再用json-bigint插件把长类型数字解析成字符串,解析失败就代表没有长数字可解析,使用JSON.parse()解析
import jsonBig from 'json-bigint'
let BASE_URL = 'http://xxxxxxxxx';//后端地址
const request = options => {
const {
url,
method,
data,
header
} = options
return new Promise((resolve, reject) => {
uni.request({
url: BASE_URL + url,
method,
data,
header,
dataType: 'String',//把接收来的数据转换成字符串类型,而不直接解析
success: res => {
try {
// 如果大数字类型转换成功则返回转换的数据结果
resolve(jsonBig.parse(res.data));
} catch (err) {
// 如果转换失败,则包装为统一数据格式并返回
resolve(JSON.parse(res.data));
}
},
fail: err => {
reject(err)
}
})
})
}
export default request
3.使用:
使用的时候用id.toString()方法把bigInt类型的数字变成字符串类型就能使用了