52 lines
2.2 KiB
JavaScript
52 lines
2.2 KiB
JavaScript
// ========================================
|
||
// Code Node: Формирование JSON для ответа N8N_CONTACT_WEBHOOK (профиль)
|
||
// Данные берутся из ноды select_user1 (SQL/запрос контакта).
|
||
// Выход этой ноды подаётся в "Respond to Webhook" как Response Body.
|
||
// ========================================
|
||
//
|
||
// Вход из ноды select_user1 (массив строк или один item на строку):
|
||
// contactid, firstname, lastname, email, mobile, phone, birthday, mailingstreet,
|
||
// middle_name, birthplace, inn, verification, bank
|
||
//
|
||
// Выход для вебхука: { "items": [ { ...поля в snake_case... } ] } или { "items": [] }
|
||
// ========================================
|
||
|
||
// Данные из ноды select_user1
|
||
const rawItems = $('select_user1').all();
|
||
let rows = [];
|
||
if (rawItems.length === 1 && Array.isArray(rawItems[0].json)) {
|
||
rows = rawItems[0].json;
|
||
} else if (rawItems.length === 1 && Array.isArray(rawItems[0].json?.items)) {
|
||
rows = rawItems[0].json.items;
|
||
} else if (rawItems.length === 1 && rawItems[0].json && !Array.isArray(rawItems[0].json)) {
|
||
rows = [rawItems[0].json];
|
||
} else {
|
||
rows = rawItems.map(i => i.json).filter(Boolean);
|
||
}
|
||
|
||
function mapRow(r) {
|
||
const v = (key) => {
|
||
const x = r[key];
|
||
return x !== undefined && x !== null && String(x).trim() !== '' ? String(x).trim() : '';
|
||
};
|
||
return {
|
||
contact_id: r.contactid ?? r.contact_id ?? '',
|
||
last_name: v('lastname') || v('last_name'),
|
||
first_name: v('firstname') || v('first_name'),
|
||
middle_name: v('middle_name') || v('middleName'),
|
||
birth_date: v('birthday') || v('birth_date') || v('birthDate'),
|
||
birth_place: v('birthplace') || v('birth_place') || v('birthPlace'),
|
||
inn: v('inn'),
|
||
email: v('email'),
|
||
registration_address: v('mailingstreet') || v('registration_address') || v('address'),
|
||
mailing_address: v('mailing_address') || v('postal_address'),
|
||
bank_for_compensation: v('bank') || v('bank_for_compensation'),
|
||
phone: v('mobile') || v('phone') || v('mobile_phone'),
|
||
};
|
||
}
|
||
|
||
const items = rows.map(mapRow);
|
||
|
||
// Один выходной item с телом ответа для Respond to Webhook
|
||
return [{ json: { items } }];
|