【发布时间】:2020-10-17 19:10:40
【问题描述】:
场景:使用 Mule 4 中的 Reduce 方法将 LIST 缩减为三个参数:
- 学生名单
- 教师名单
- 学生人数
在转换消息中使用以下 Dataweave 代码:
%dw 2.0
output application/java
---
payload reduce((value, acc = { 'totalStudents': 0 as Number,'studentList' : [], 'teachersList' : []}) ->
if(
value.age > 18 and value.age < 25
){
totalStudents : (acc.totalStudents default 0 as Number) + 1,
studentList : (acc.studentList default [] ) << {
'studentName' : value.Name ++ " is a Student"
}
}else{
teachersList : acc.teachersList default [] << value.Name ++ " is a Teacher"
}
)
问题陈述:转换消息已成功处理,但在有效负载中我只得到两个值:
- payload.totalStudents 和
- payload.studentList
谁能帮我理解为什么我的结果中没有得到 payload.teachersList?
【问题讨论】:
-
年龄大概在18到25之间
-
@SalimKhan 即使输入列表中所有人的年龄在 18 到 25 岁之间,因为我已经在
acc = { 'totalStudents': 0 as Number,'studentList' : [], 'teachersList' : []}中定义了教师列表,我希望看到 payload.teachersList = [] 但我是在输出中根本没有得到这个 payload.teachersList -
那个是acc中初始化的变量。输出就是您在脚本中构建的内容。