Как отправлять запросы к api в пакетах в приложении logic

#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 Я обновил свой ответ, пожалуйста, взгляните.