华为云ASTRO轻应用-通过华为云Astro轻应用连接器对接第三方数据库:步骤四:通过脚本调用连接器获取数据

时间:2025-03-03 11:34:46

步骤四:通过脚本调用连接器获取数据

  1. 在应用设计器中,选择“逻辑”,单击脚本后的“+”
  2. 新建一个空白的脚本,名称设置为“dbscript”,单击“添加”

    图20 创建脚本dbscript

  3. 在脚本编辑器中,输入示例代码。

    示例代码中,“命名空间__demoDB”为4中定义的连接器名称,“命名空间__noauth”为3中添加的认证信息,“命名空间__demoSql”为6中添加的动作。
    import * as connector from 'connector';
    import * as context from 'context';//导入上下文相关的标准库
    
    
    //定义入参结构
    @action.object({ type: "param" })
    export class ActionInput {
        @action.param({ type: 'String', required: false, label: 'String' })
        sql: string;
    }
    //定义出参结构
    @action.object({ type: "param" })
    export class ActionOutput {
        @action.param({ type: 'any' })
        res: any;
    }
    
    @action.object({ type: "method" })
    export class CreateWorkOrder {    //定义接口类,接口的入参为ActionInput,出参为ActionOutput
        @action.method({ input: 'ActionInput', output: 'ActionOutput' })
        public createWorkOrder(input: ActionInput): ActionOutput {
            let out = new ActionOutput();    //新建出参ActionOutput类型的实例,作为返回值
            let error = new Error();    //新建错误类型的实例,用于在发生错误时保存错误信息
            try {
                // 页面上自己创建的自定义连接器的调用方法,第一个参数是创建的自定义连接器名称,第二个参数是认证信息名称
                let client = connector.newClient("命名空间__demoDB", "命名空间__noauth");
                //入参
                let input = { "sql": "select * from flowinstance limit 1" };
                // 第一个入参是动作名称, 第二个参数是入参
                let resp = client.invoke("命名空间__demoSql", input);
                // 打印输出结果
                console.log(resp);
                out.res = resp;
            } catch (error) {
                console.error(error.name, error.message);
                context.setError(error.name, error.message);
            }
            return out;
        }
    }

  4. 单击页面上方的,保存脚本。
  5. 单击编辑器上方的,执行脚本。
  6. 在页面底部单击测试窗口右上角的,在“输出参数”中可以查看到返回的数据库数据。

    图21 查看返回数据

support.huaweicloud.com/bestpractice-astrozero/astrozero_bestpractice_0020.html