脚本节点编码指导
更新时间: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返回。