Hi there, this should be an easy task but I am probably missing something.
I have a workflow where I receive order data from Shopify. It contains an array of order items. Then I try to create a JSON object to call my API with. I need to map array of order items from Shopify to an array of items with different keys accepted by my API.
I tried to do it like you can see on the screenshot
But this maps only the first element of an array. How can I map all elements?
Thanks!
Hi Filip,
Possible solution is to add an “Iterator” module (maybe 2 in your case for both "Item ID and “quanity”) after the shopify module. Then put the arrays in your screenshot as input for the iterators. This should split the array into the different items within these array that you can then map individually.
Hope this works!
Welcome to the Make community!
You have to use an Iterator-Aggregator combo.
Aggregators
Every result (item/record) from an iterator module will output a bundle. This can result in multiple bundles, which then trigger multiple operations in future modules (one operation per bundle). To “combine” multiple bundles into a single variable, you’ll need to use an aggregator of some sort.
Aggregators are modules that accumulate multiple bundles into one single bundle. An example of a commonly-used aggregator module is the Array aggregator module. The next popular aggregator is the Text Aggregator which is very flexible and can apply to many use-cases like building of JSON, CSV, HTML.
There are other types of aggregator modules, click the below links to find out more:
Array Aggregator – mapping multiple bundles into a complex field
The Array Aggregator module is very powerful because it allows you to build a complex array of collections for a later module’s field to map multiple items (collections) to it.
This is done using the “Target structure type” of an Array Aggregator module.
Here is an example:
As you can see, the “Map” toggle on complex fields are used when you have an array. You can easily build an array variable to map to a future module’s field, by using an Array Aggregator module and select the “Target Structure Type” as the future module’s field you have mapped the array into.
Hope this helps! Let me know if there are any further questions or issues.
— @samliew