Как вывести текстовую строку в переменную на Anypoint Platform с помощью Dataweave? - PullRequest
1 голос
/ 27 сентября 2019

Мне кажется, что я схожу с ума, потому что не могу понять, как сделать что-то столь же простое, как перебрать объект, объединить строку в виде простого текста и вывести результат в переменную.Вот что-то похожее, что я сделал, и это прекрасно работает:

%dw 2.0
output application/xml
var promptParams = attributes.queryParams filterObject($$ startsWith "PROMPT") orderBy($$)
---
{
RESULT: {
    Prompts: 
        promptParams mapObject(promptValue, promptName, index) -> {
            PROMPT: {
                UniquePromptName: promptName,
                FieldValue: promptValue
                }
        }
    }
}

Так что в этом случае я фильтрую параметры строки запроса URL, чтобы получить только те, которые мне нужны, затем перебираю их и создаю вывод xml,У меня проблема в том, что, если я пытаюсь сделать то же самое, но вывести в переменную текстовую строку, я не могу заставить что-либо работать.

По сути, я хочу пойти из этоговходные данные:

https://example.com?PROMPT1=foo&PROMPT2=bar&PROMPT3=lorem&PROMPT4=ipsum&utm_source=Dolor&utm_campaign=SitAmet

для этого вывода, хранящегося в переменной потока:

foo!bar!lorem!ipsum

Я, должно быть, упускаю что-то простое, потому что это не так сложно сделать.Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 28 сентября 2019
%dw 2.0
output text/plain
var promptParams = (((payload.message splitBy "?")[1]) splitBy "&") //stored url //in payload.message
---
promptParams map {
    a: ($ splitBy "=")[1]
}.a joinBy "!"
2 голосов
/ 28 сентября 2019

вы можете использовать pluck и joinBy и просто убедиться, что у вас установлена ​​целевая переменная, если вы используете компонент сообщения преобразования.

<ee:transform doc:name="Transform Message" >
    <ee:variables >
        <ee:set-variable variableName="promptAttributes" ><![CDATA[%dw 2.0
output text/plain
---
(attributes.queryParams[?($$ startsWith "PROMPT")] pluck $) joinBy "!"]] </ee:set-variable>
    </ee:variables>
</ee:transform>
2 голосов
/ 27 сентября 2019

Должно быть что-то вроде этого:

%dw 2.0
output text/plain
var promptParams = attributes.queryParams filterObject($$ startsWith "PROMPT")
---
promptParams pluck($) reduce ($$ ++ "!" ++ $)

Вывод: foo!bar!lorem!ipsum

Вы запросили обычный текст, но я бы порекомендовал application / java, если вы используете переменную внутрипоток.

...