在Anypoint Studio中拆分字符串以创建新文件名时发生重载错误

时间:2019-01-31 10:38:08

标签: mule mule-component anypoint-studio dataweave

我正在使用Mule 4和Anypoint Studio 7。

我正在用正在处理的时间戳重命名正在处理的文件。因此 test.csv 变为 test + 2019-01-30T16:32:56.95Z.csv

我的问题是,当我运行应用程序时它似乎可以工作,但是针对“设置变量”组件却显示错误,在该组件中,我使用以下表达式设置了要使用的创建文件名:

#["myfolder/" ++ (payload.key splitBy("."))[0] ++ "+" ++ now() ++ "." ++ (payload.key splitBy("."))[1]]

在“设置变量”组件上看到的错误消息是:

Unable to call any overload of function `splitBy` with arguments (String | Null, String) overloads:
    - splitBy(text: String, separator: String) -> Array<String> reason:     
        - Expecting Type: String, but got: Null.
        TIP: Try using `default` operator to avoid nullable objects.
        TIP: Use `!` value selector modifier to assert that an optional field is always present.
    - splitBy(text: String, regex: Regex) -> Array<String> reason:  
        - Expecting Type: String, but got: Null.
        TIP: Try using `default` operator to avoid nullable objects.
        TIP: Use `!` value selector modifier to assert that an optional field is always present.
        - Expecting Type: Regex, but got: String.

如何解决此错误?我尝试了使用默认值的提示,但错误仍然显示。

谢谢

1 个答案:

答案 0 :(得分:2)

这里的问题是,由于某种原因,有效负载的元数据说您的密钥是optional or nullable。因此,数据编织类型检查器失败,因为您的脚本将使发生的事情失败。因此,为了解决此问题,您可以简单地进行

#["myfolder/" ++ (payload.key default "." splitBy("."))[0] ++ "+" ++ now() ++ "." ++ (payload.key default "." splitBy("."))[1]]

default运算符将确保您的值不可为空