-3

我正在尝试从 json 数据中找到日期的最大值。但我得到以下错误

Message        : "You cannot compare a value of type :Null
Trace:
 at reduce (Unknown)
 at dw::Core::maxBy (line: 5535, column: 3)
 at main (line: 1, column: 248)" evaluating expression: 
 "%dw 2.0 output application/json ---  {  Value2:  (  if (vars.data.Value1 as String != "")   
 (payload maxBy((item) -> item.startDate)).startDate default vars.data.Value1   
 else   ""  ), RCount: sizeOf(payload) }".
Error type      : MULE:EXPRESSION
Element        : executeInterface/processors/8 @ gg:gg.xml:121 (interface)
Element XML      : <set-variable value="#[%dw 2.0 output application/json ---
 {  Value2:  (  if (vars.data.Value1 as String != "")   
 (payload maxBy((item) -> item.startDate)).startDate default vars.data.Value1   
 else   ""  ), RCount: sizeOf(payload) }]" doc:name="interface" doc:id="2c140185-2fc5-4e11-9b78-96fc2ddcfa2f" variableName="interface"></set-variable>
 (set debug level logging or '-Dmule.verbose.exceptions=true' for everything).

设置变量组件中编写的逻辑是

%dw 2.0
output application/json
---
{
Value2:   
(  if (vars.data.Value1 as String != "")   
(payload maxBy((item) -> item.startDate)).startDate default vars.data.Value1   
 else   ""  
 ),
RCount: sizeOf(payload)
}

在调试模式下运行时,发现问题出在 maxby 语句中。

请建议。如何解决此问题

4

1 回答 1

0

该错误表明尝试比较时某些内容为空。鉴于您提到错误出现在 maxBy() 处,因此属性 startDate 可能为 null 或其中一个元素中不存在。您还应该显示转换的值,以便我们确认它。

更新:如果 startDate 属性不存在或拼写错误,我可以重现该错误。例如,如果我拼错了 item.StartDate(错误的大写“S”),则会产生错误。确保有效负载和脚本完全匹配。

于 2019-12-30T15:32:07.817 回答