收藏
回答

调用云函数的标准返回数据结构是什么?

貌似文档里没看到啊,也许是我没找到?

我希望在小程序端/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
回答关注问题邀请回答
收藏

1 个回答

  • 哄哄
    哄哄
    2020-09-09

    服务端推荐使用SDK来做https://docs.cloudbase.net/api-reference/server/node/initialization.html

    另外说一下,你看到的各种返回类型返回值,是wx.cloud封装的结果,导致看起来不同。

    在文档里有关于错误值的一些定义的,一般code=0是正常的,其他的可以按照错误码来做提示

    2020-09-09
    有用
    回复
登录 后发表内容
问题标签