Ошибка перегрузки при разбиении строки в Anypoint Studio для создания нового имени файла - PullRequest
0 голосов
/ 31 января 2019

Я использую Mule 4 и Anypoint Studio 7.

Я смотрю на переименование файла, который я обрабатываю, с отметкой времени, в которой он был обработан.Так что test.csv становится test + 2019-01-30T16: 32: 56.95Z.csv .

Моя проблема заключается в том, что он работает, когда я запускаюприложения, но в компоненте «Set Variable» отображается ошибка, в которой я задаю имя файла для создания, используя следующее выражение:

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

Сообщение об ошибке, которое я вижу в компоненте «Set Variable»is:

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 голосов
/ 31 января 2019

Проблема здесь в том, что по какой-то причине метаданные вашей полезной нагрузки говорят, что ваш ключ - optional or nullable.Таким образом, проверка типа данных переплетается с ошибкой, говоря, что ваш скрипт потерпит неудачу, что это произойдет.Таким образом, чтобы исправить это, вы можете просто сделать

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

Оператор default убедится, что ваше значение не имеет значения

...