我想创建与计数变量指定一样多的元素,例如:
有一个表格,其中包含有关支持的设备的信息
select port_count
from equipment
where id=#[flowVars.equipmentId]
Run Code Online (Sandbox Code Playgroud)
我必须生成一条消息,让另一个不受我控制的系统解释和执行:
<dw:transform-message doc:name="Get value">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
"actions": {
(for 1..flowVars.port_count map {
"action": {
"type": "add_port",
"id": $$
}
})
}
}]]></dw:set-payload>
</dw:transform-message>
Run Code Online (Sandbox Code Playgroud)
想要的结果:
{
"actions": {
"action": {
"type": "add_port",
"id": 1
},
"action": {
"type": "add_port",
"id": 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
DataWeave 没有 for 的概念,因为它是一种函数式语言。你仍然可以通过使用范围来代替你想要的:
%dw 1.0
%var port_count=3
%output application/json
---
{
actions:
(((1 to port_count) when port_count > 0 otherwise []) map
action: {
"type": "add_port",
"id": $
}
) reduce ($$ ++ $)
}
Run Code Online (Sandbox Code Playgroud)
输出:
{
"actions": {
"action": {
"type": "add_port",
"id": 1
},
"action": {
"type": "add_port",
"id": 2
},
"action": {
"type": "add_port",
"id": 3
}
}
}
Run Code Online (Sandbox Code Playgroud)
只需更改 flowVar 的 port_count 变量即可。
删除 reduce() 运算符将返回一个列表,这对我来说更有意义。
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |