如何解决MULE 4:REDUCE方法:如果累加器是Object,Reduce方法中的元素大小是否有限制?
场景:使用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.total学生和
- payload.studentList
有人可以帮助我了解为什么我的结果没有得到 payload.teachersList 吗?
解决方法
最后,这应该可以满足您的需求:
%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"
},teachersList: acc.teachersList
}else{
totalStudents : acc.totalStudents,studentList : acc.studentList,teachersList : (acc.teachersList default [] ) << {'teacherName': value.Name ++ " is a Teacher"}
}
)```
[![enter image description here][1]][1]
[1]: https://i.stack.imgur.com/fcyNf.png
,
{{1}},
希望这会有所帮助。由于存在其他条件,因此会建立教师列表,而忽略了学生列表
,这也是..在下面的输入中,第二个元素满足else条件,因此最终输出仅包含输入中最后4个条目的学生。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。