#azure-logic-apps
#azure-logic-apps
Вопрос:
У меня есть приложение logic, в котором я создаю запрос json с использованием встроенного кода javascript и отправляю его в api. В запросе json может содержаться более 1000 запросов. Мне нужно отправлять эти запросы в пакетах по 200 в api. Как мне добиться пакетной обработки в приложении logic?
Комментарии:
1. Привет, я не совсем понимаю вашу ситуацию, не могли бы вы предоставить более подробную информацию о вашем встроенном коде javascript? Вы имеете в виду разделить 1000 записей json на пять записей 200 и использовать foreach во встроенном коде js для выполнения цикла из пяти запросов?
2. Да, я делаю это в настоящее время, var field = Object.keys(workflowContext.trigger.outputs.body . Атрибуты); var key = ‘ключ’; var items = workflowContext.trigger.outputs.body . AttributeGroups[ключ] [‘Элементы’]. Элементы; var ids= []; for (var i = 0; i < элементы. длина; i ){ ids.push(элементы [i][‘Id’][‘Value’]) } var ID1 = workflowContext.actions.tag.outputs.body[0].id; var json = {}; json.records = новый массив(); для (var i в идентификаторах) { json.records.push({ «атрибуты»: { «Id»: идентификаторы[i] }, «Свойство»: ID1, «Тип»: идентификаторы [i] }); } возвращает json;
3. Я хочу сгенерировать несколько массивов json размером 200
Ответ №1:
Для этого требования, пожалуйста, обратитесь к js-коду ниже:
//First define a function to do the separate arry operation
function group(array, subGroupLength) {
let index = 0;
let newArray = [];
while(index < array.length) {
newArray.push(array.slice(index, index = subGroupLength));
}
return newArray;
}
//Then use the "group(array, subGroupLength)" function to separate your array to multiple 200 records array
var resultArray = group(json.records, 200);
return resultArray;
После кода результирующий массив должен выглядеть так:
[
[
{
"attributes": {
"Id": ""
},
"Property": ID1,
"Type": ""
},
.....
//200 items
.....
{
"attributes": {
"Id": ""
},
"Property": ID1,
"Type": ""
}
],
....
//five sub array
....
[
{
"attributes": {
"Id": ""
},
"Property": ID1,
"Type": ""
},
.....
//200 items
.....
{
"attributes": {
"Id": ""
},
"Property": ID1,
"Type": ""
}
]
]
=============================== Обновление===========================
Для вашего нового требования о give all those sub arrays a name(same name for all sub arrays)
том, я изменил код function group(array, subGroupLength)
, как показано ниже:
function group(array, subGroupLength) {
let index = 0;
let newArray = [];
while(index < array.length) {
let item = array.slice(index, index = subGroupLength);
let itemObj = {"subArray": item};
//newArray.push(array.slice(index, index = subGroupLength));
newArray.push(itemObj);
}
return newArray;
}
В моем коде имя для каждого подмассива равно subArray
. Пожалуйста, проверьте, соответствует ли он вашим требованиям.
Комментарии:
1. Большое вам спасибо за то, что потратили время и изучили это! Я поступил аналогичным образом, я также хотел присвоить всем этим вложенным массивам имя. Одно и то же имя для всех вложенных массивов, возможно ли это при создании массива?
2. Привет @ Mm77 Я обновил свой ответ, пожалуйста, взгляните.