- http api请求云函数经常失败/超时是什么问题?
举例: 报错信息:[-601008] hint: [rlBbOPI2e-4a4NZa] rid: 6040fe56-6ce1cd26-1be0bce8 所调的云函数是做数据库聚合查询,不算复杂,同样的操作在小程序端调用就返回很快,但web端调用很慢是为什么呢?请帮忙根据rid定位下问题。
2021-03-05 - 调用云函数的标准返回数据结构是什么?
貌似文档里没看到啊,也许是我没找到? 我希望在小程序端/web端都写一个函数,通过在云函数调用外面包一层,进行统一错误收集处理: //小程序端 async function callCloudFunction(fname, opt){ const {errCode, errMsg, requestId, result} = await wx.cloud.callFunction({ name: fname, data: opt }) //当有errCode且不为零时,或errMsg里不含有ok时,认为错误 if(errCode || !/ok/.test(errMsg)){ wx.showToast({ title: '运行错误', icon: 'none', duration: 2000 }) return {errCode, errMsg} } else { //正确 return result } } //服务器端调用http_api方式的api async callCloudFunction (fname, opt) { //... url拼装,略 const result = await ctx.curl(url, { method: 'POST', contentType: 'json', dataType: 'json', ...opt }) //先检验http请求是否200 if (!result || !result.data) { ctx.logger.error('无信息返回', url) return { err: new Error('无信息') } } //如果http返回有body体,且解析出errcode, errmsg, resp_data,解构 const { errcode, errmsg, resp_data } = result.data //如果errcode有值且不为零 if (errcode) { return { err: new Error(`[${errcode}]${errmsg}`) } } const { data: resultData } = JSON.parse(resp_data) return { err: null, data: resultData } } } 我的疑问是,云函数调用后返回的信息并不是很标准,成功/失败都可能有errMsg,且errCode有/无值不一定完全代表成功/失败,请问腾讯的开发者们是不是能公布一下标准的成功和错误返回定义。 web端和小程序端字段属性值的命名也不同,errMsg/errmsg,errCode/errcode,result/resp_data,相信都是类似的含义,但大小写不同,十分令人困惑。
2020-09-08