貌似文档里没看到啊,也许是我没找到?
我希望在小程序端/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,相信都是类似的含义,但大小写不同,十分令人困惑。
服务端推荐使用SDK来做https://docs.cloudbase.net/api-reference/server/node/initialization.html
另外说一下,你看到的各种返回类型返回值,是wx.cloud封装的结果,导致看起来不同。
在文档里有关于错误值的一些定义的,一般code=0是正常的,其他的可以按照错误码来做提示