Function节点允许JavaScript代码针对传入的消息运行,然后返回零个或者多个消息以继续流。
消息以一个称为msg的对象的形式进行传输。按照约定msg有一个属性msg.payload包含了消息的主体(也就是消息的具体内容)。
其他的节点可以把它们自己的属性附加到消息中,并且他们应该在自己的记录中被描述。
写一个功能(Writing a Function)
写进Function节点的代码代表了功能的主体。最简单的功能就是返回消息,比如下面这样:
return msg
如果功能返回的是null,那么将不会有消息在流中传递。
返回的消息对象不必要和一开始传输的对象一样,功能中可以构建一个完全全新的对象在返回消息对象之前。比如:
var newMsg = {payload:msg.payload.length};
return newMsg;
注:构建一个新的消息对象将失去任何一个已经接收到的消息的消息属性。这可能会破坏一些流,比如HTTP/Respone流需要msg.req和msg.res属性被保存到端到端。通常,Function节点应该返回已经传输的对它们的属性做了任何改变消息对象
发送给多个输出(Sending to multiple outputs)
编辑对话的功能允许输出的数量发生改变。如果不只有一个输出,通过发送给多个输出这个功能可以返回一个数组的信息。
这使得写一个取决于一些情况的发送信息给多个不同输出的功能很容易。比如,这个功能将发送任何基于主题banana给第二个输出而不是第一个。
If(msg.topic === ‘banana’){
return [null,msg];
}else{
return [msg, null];
}
接下来的例子