我正在使用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.
如何解决此错误?我尝试了使用默认值的提示,但错误仍然显示。
谢谢
答案 0 :(得分:2)
这里的问题是,由于某种原因,有效负载的元数据说您的密钥是optional or nullable
。因此,数据编织类型检查器失败,因为您的脚本将使发生的事情失败。因此,为了解决此问题,您可以简单地进行
#["myfolder/" ++ (payload.key default "." splitBy("."))[0] ++ "+" ++ now() ++ "." ++ (payload.key default "." splitBy("."))[1]]
default
运算符将确保您的值不可为空