Warm tip: This article is reproduced from serverfault.com, please click

mule4-跳过dataweave 2.0中的else部分

(mule4 - Skipping else part in dataweave 2.0)

发布于 2020-12-17 17:07:47

我正在尝试将常规代码转换为DataWeave。我想根据条件将值存储在变量中。伪代码为-

payload map (value, index) -> (
  if(condition) (
    vars.variableName + {
    "attribute1": "value1",
    "attribute2": "value2",
    "attribute3": "value3"
    }
  )
)

如你所见,我不想使用else部分。但是在DW中,其他部分是强制性的。

因此,有什么方法可以跳过else部分。我尝试了这个

if(condition)(

)else{}

OR

if(condition)(

)else""

但这会在变量中添加其他“”或{}

Questioner
Satyam Pisal
Viewed
1
short stack stevens 2020-12-19 01:11:00

你可以只将else作为预先存在的变量,而无需对其添加任何内容(需要在此脚本之前初始化)。

payload map (value, index) -> (
  if(condition) (
    vars.variableName ++ {
    "attribute1": "value1",
    "attribute2": "value2",
    "attribute3": "value3"
    }
  )
  else vars.variableName
)

或者,如果尚未创建vars.variableName,则可以将其默认为空对象,以便稍后可以在另一个脚本中添加它。但是,如果尚未初始化变量,则中的条件if-else必须将处理定向到该else子句。否则,如果尝试将对象附加到变量上,则会收到错误消息null

payload map (value, index) -> (
  if(condition) (
    vars.variableName ++ {
    "attribute1": "value1",
    "attribute2": "value2",
    "attribute3": "value3"
    }
  )
  else vars.variableName default {}
)

BTW需要使用++来组合对象