HarmonyOS鸿蒙Next端云一体化相关问题

HarmonyOS鸿蒙Next端云一体化相关问题 各位大佬好,这个问题是 端云一体化的中的云函数调用方法的问题

我就很奇怪

首先 我写的云函数 通过本地调试是完全可以调试通的,相关代码如下:

  1. 接收传参
let action = event.body? event.body.action : event.action;
let username = event.body? event.body.username : event.username;
let password = event.body? event.body.password : event.password;

cke_4862.png

云函数本地调试

cke_8851.png

到此为止 很正常,接下来是我 端侧代码调用 就出问题了

cke_19637.png

报错内容如下:

云函数返回原始数据: {"result":{"code":-1,"message":"未知操作类型: undefined"}}

我靠了咋回事呢


更多关于HarmonyOS鸿蒙Next端云一体化相关问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

学到了

更多关于HarmonyOS鸿蒙Next端云一体化相关问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


靠 解决了 , 需要 转一下json 之前试过, 但是忘记部署了 做个简单的记录吧 ,

端云一体化是HarmonyOS Next提供的应用开发模式,允许开发者通过ArkTS语言调用云函数、云数据库、云存储等Serverless服务,实现前后端统一部署与同步开发。其核心组件包括云函数(CloudFunctions)、云数据库(CloudDB)和身份认证(Auth),通过端侧SDK直接接入华为云AGC平台,简化后端运维。

问题出在端侧参数传递与云函数解析方式不匹配。

云函数通过 event.body?.action 优先解析 body,但端侧直接调用云函数时,参数通常挂在 event 根对象下,不会自动封装到 body 中。
本地调试面板默认将输入对象直接作为 event 根字段,所以能取到 action。而端侧如果直接传 { body: { action: 'xxx' } } 才和你的兼容写法吻合,否则 action 为 undefined,触发“未知操作类型”。

两种快速修正方式(二选一):

  1. 修改云函数取值:始终从 event 根属性取值,不加 body 兜底。

    const { action, username, password } = event;
    
  2. 修改端侧调用:在调用 cloud.callFunction 时,将参数包装成 body。

    cloud.callFunction({
      name: 'yourFunction',
      data: { body: { action: 'login', username: 'xxx', password: 'xxx' } }
    });
    

推荐第一种,更符合端云一体化规范,参数统一平铺在 event 下。

回到顶部