Estimate
Estimate

Reputation: 1461

How to create multiple payloads from a script mediator - WSO2 ESB

Say I have an initial payload as below:

{ 
 "avail": "123",
 "vendorList": "vendor1,vendor2"
}

And I use Script mediator to break these vendors and add in different payloads as below:

Payload1:
{ 
 "avail": "123",
 "vendorList": "vendor1,vendor2",
 "vendor": "vendor1"
}

Payload2:
{ 
 "avail": "123",
 "vendorList": "vendor1,vendor2",
 "vendor": "vendor2"
}

Currently I have script as below:

payload = mc.getPayloadJSON();
var vendors = mc.getProperty('vendorList');
var log = mc.getServiceLog();
log.info(vendors);
var array_supp = String(vendors).split(',');
for (var i = 0; i < array_supp.length; i++) {
   payload.vendor = array_supp[i];
   log.info(array_supp[i]);
   mc.setPayloadJSON(payload);
}

This always give last vendor in one payload.

Please advise how can I achieve this using Script mediator.

Upvotes: 1

Views: 296

Answers (1)

amg_amit
amg_amit

Reputation: 495

The Reason why last vendor is coming is because you are not appending the result of earlier iteration. Try the below snippet and let me know if the issue is resolved or not

for (var i = 0; i < array_supp.length; i++) {
   payload.vendor = array_supp[i];
   log.info(array_supp[i]);
  payload=payload + payload.vendor
   mc.setPayloadJSON(payload);
}

Upvotes: 1

Related Questions