Using a Run JS Code type query, we will trigger another query for each item in an array, and after the last is completed return all of the results together in the jsCodeQueryName.data value.
Where get_assignment is a REST Api query, taking an input of {{assignment_id}} , const promises returns a mapping function of each result of the API where we pass in ID as additionalScope.
In a copyable format:
const arr = assignment_ids.value //your array of things to iterate over
const query = get_assignment // your query to trigger for each
const promises = arr.map((item) => {
return query.trigger({
additionalScope: {
assignment_id: item //assignment_id would be available inside {{assignment_id}} in the target query when run
}
});
});
return Promise.all(promises)
You could then reference the results inside a calculated column of a table for example using {{jsQueryName.data[i]}} in the calculation to have each row display the result.
NOTE: If you pass in any null values to the .map method, this code will return a "Failed to execute 'postMessage' on 'Window': # could not be cloned." error. You'll need to filter out or replace any null values in the array before then.
@alex-w I am new to retool but loving it. Can you share an example where this has been done please. I have tried with the demo data but not able to extract the assignment_id successfully.
Keep getting undefined values. I am using table2.selectedRows for the array source.
The rowID is shown correctly and pulls the correct row number for multi-selected rows, however when I try and call rowID from another resource i.e postman the value returned is null
Having changed {{query2.data['rowID'].user to {{query1.data['0'].user}} I can see the correct user value. I was hoping to use rowID as a dynamic variable but keep getting null regardless.