30 lines
1.0 KiB
JavaScript
30 lines
1.0 KiB
JavaScript
|
|
/**
|
|||
|
|
* n8n Code node: развернуть data в плоский список.
|
|||
|
|
* Если в data попал объект вида { "crm_items": [...] }, он заменяется на сами элементы crm_items.
|
|||
|
|
*
|
|||
|
|
* Вход: один элемент с полем data (массив), где часть элементов могут быть { crm_items: [...] }.
|
|||
|
|
* Выход: один элемент { data: [...] } — плоский массив только карточек (заявки Postgres + элементы CRM).
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
const input = $input.first().json;
|
|||
|
|
let data = input.data;
|
|||
|
|
if (data == null) data = input.items || input.drafts || [];
|
|||
|
|
if (!Array.isArray(data)) data = [data];
|
|||
|
|
|
|||
|
|
const flattened = [];
|
|||
|
|
for (const item of data) {
|
|||
|
|
if (
|
|||
|
|
item &&
|
|||
|
|
typeof item === 'object' &&
|
|||
|
|
item.crm_items &&
|
|||
|
|
Array.isArray(item.crm_items) &&
|
|||
|
|
Object.keys(item).length === 1
|
|||
|
|
) {
|
|||
|
|
flattened.push(...item.crm_items);
|
|||
|
|
} else {
|
|||
|
|
flattened.push(item);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return [{ json: { ...input, data: flattened } }];
|