脚本节点编码指导

更新时间:2018-02-07 09:56:48

脚本节点中无须定义函数,可以获取到的变量为msg和apiClient,这是内置的变量,此外node.js本身的全局变量都可以获取到。msg.payload为上一节点的输出,从msg.payload中读取入参,再将出参覆盖写入msg.payload。msg.request中可以获取开始节点的输入。

脚本节点代码示例如下:

var name = msg.payload.name;
var id = msg.payload.id;
var result = 'hello, id is ' + id + ', name is ' + name;

msg.payload = result;

return result;

代码模板如上,说明:

  • 默认从msg.payload中读取入参,经过脚本处理后,可以将出参覆盖写入到msg.payload,如果不想覆盖之前的msg.payload,则可以指定写到其它属性上,如msg.payload2 = result;默认将脚本的result返回。

  • 脚本节点中如果包含异步调用,则必须返回一个Promise对象。

var promise = new Promise(function(reject, resolve){
    doAsync('', function(err, data){
        if(err){
            reject(err)
        }
        resolve(data)
    })
})

return promise

如上所示,异步操作必须返回一个promise对象。此外,异步操作还支持使用co模块,如下

const co = require('co');
var promise = co(function* () {
    var result = yield doAsync();

    return result;
});
return promise;

最终必须将promise返回

apiClient可以调用服务,示例为apiClient.post(url, version, params),该调用会返回一个promise对象,具体用法见下文。其中url为服务的url路径,version为服务的版本,params为服务的入参(json格式)
脚本节点中使用apiClient示例。

方法一(推荐):

const url = 'http://xxxxx';
const version = '1.0.0';
const params = {scope: '1'};

const promise = apiClient.post(url, version, params);

return promise;

最终必须将promise返回。

方法二:

const url = 'http://xxxxx';
const version = '1.0.0';
const params = {scope: '1'};

const promise = apiClient.post(url, version, params);

return promise;

最终必须将promise返回。

results matching ""

    No results matching ""