Node Code JavaScript n8n

Cara Menggunakan Node Code (JavaScript) di n8n untuk Data Kompleks

Di titik tertentu, setiap pembuat workflow menyadari keterbatasan node visual: menggabungkan data dari lima sumber, membersihkan teks berformat aneh, atau menghitung agregasi yang tidak disediakan node bawaan. Di sinilah Node Code (JavaScript) di n8n masuk — jendela menuju fleksibilitas penuh tanpa meninggalkan kenyamanan kanvas visual.

Kabar baik untuk yang bukan programmer: pola kode di node ini sangat berulang. Kuasai empat pola dasarnya, dan 90% kebutuhan transformasi data kompleks terselesaikan. Artikel ini membedah semuanya: cara kerja node Code, pola-pola siap salin, kesalahan umum, sampai kapan sebaiknya TIDAK memakai kode.

Node Code dalam Satu Halaman: Konsep Dasar

Node Code menerima item-item data dari node sebelumnya (array of objects), memprosesnya dengan JavaScript, lalu mengeluarkan hasilnya ke node berikutnya. Ada dua mode yang wajib dipahami sejak awal:

  • Run Once for All Items: kode dijalankan SEKALI untuk seluruh data. Cocok untuk agregasi — menghitung total, menggabungkan hasil, menyusun ringkasan. Akses data lewat $input.all().
  • Run Once for Each Item: kode dijalankan per item. Cocok untuk transformasi satuan — membersihkan tiap teks, memformat tiap tanggal. Akses item aktif lewat $json.

Output wajib berupa array of objects dengan field json — bentuk yang sama seperti output node lain. Struktur yang konsisten inilah yang membuat node Code menyatu mulus di rantai workflow apa pun.

Di dalam kode, Anda punya akses ke helper bawaan: $json (data item), $node["Nama Node"].json (data node lain), dan fungsi lodash untuk manipulasi data yang ringkas.

Pola 1: Transformasi Per Item — Pembersihan Data

Kasus paling umum: data mentah yang kotor — spasi berlebih, kapital tidak konsisten, field kosong. Mode Run Once for Each Item dengan pola ini menyelesaikannya:

return { json: { nama: $json.nama?.trim().toLowerCase() || 'tanpa-nama', harga: Number(String($json.harga).replace(/[^0-9]/g, '')) || 0, sumber: 'form-website' } };

Tiga teknik penting ada di satu baris: ?.trim() menghindari error bila field kosong, || 'default' memberi nilai cadangan, dan replace() membuang karakter non-angka dari harga. Pola “bersihkan-beri-default-kembalikan” ini dipakai berulang kali di workflow nyata.

Pola 2: Agregasi — Ringkasan dari Banyak Item

Mode Run Once for All Items untuk kasus seperti “total penjualan hari ini” atau “gabungkan semua komentar jadi satu teks untuk AI”:

const items = $input.all();
const total = items.reduce((sum, i) => sum + (i.json.harga || 0), 0);
const gabung = items.map(i => i.json.teks).join(' ');
return [{ json: { total, gabung, jumlah: items.length } }];

reduce menjumlahkan, map mengambil field tertentu dari tiap item, join menggabungkan. Pola ini adalah jembatan wajib sebelum node AI: meringkas 50 item menjadi satu teks yang siap diproses.

Pola 3: Menggabung & Memecah Data Antar Sumber

Workflow kompleks sering butuh “menikahkan” data dari dua node — misalnya daftar produk dari API A dengan stok dari API B:

const produk = $('Ambil-Produk').all();
const stok = $('Ambil-Stok').all();
const mapStok = new Map(stok.map(s => [s.json.sku, s.json.qty]));
return produk.map(p => ({ json: { ...p.json, stok: mapStok.get(p.json.sku) ?? 0 } }));

Trik intinya: ubah salah satu sumber menjadi Map berdasarkan kunci yang sama (sku), lalu tempelkan ke sumber utama. Jauh lebih cepat dan mudah dibaca daripada loop bersarang. Sebaliknya, untuk memecah satu item berisi banyak nilai menjadi banyak item, gunakan flatMap — setiap elemen hasil pemecahan jadi satu item output.

Pola 4: Berbicara dengan Node Lain & Kondisi Kompleks

Dua helper yang membuat kode Anda “melihat” seluruh workflow:

  • $node["Nama Node"].json.field — mengambil data dari node mana pun, berguna bila data yang dibutuhkan sudah 2-3 node ke belakang.
  • $workflow.name dan $execution.id — identitas eksekusi, berguna untuk logging dan penelusuran.

Untuk logika bercabang yang terlalu rumit untuk node IF, node Code bisa menjadi “router”: tentukan nilai tujuan per item berdasarkan kombinasi kondisi, lalu node Switch yang meneruskan ke cabang yang tepat. Pola ini menjaga workflow tetap rapi meski logika bisnisnya bertingkat.

Kesalahan Umum dan Cara Menghindarinya

  • Return bukan array of objects: penyebab error nomor satu. Selalu: return [{ json: {...} }].
  • Lupa field kosong: $json.field.length meledak bila field-nya undefined. Bungkus dengan ?. dan beri default || ''.
  • Salah mode: kode agregasi dijalankan per item menghasilkan hasil aneh. Cek dua kali mode node sebelum menyalahkan kodenya.
  • Kode panjang tanpa log: tambahkan console.log() saat debugging, lihat hasilnya di log eksekusi, hapus setelah selesai.
  • Berat di data besar: untuk ribuan item, hindari operasi berulang dalam loop — gunakan Map/dictionary seperti pola 3.

Kapan Node Code BUKAN Jawabannya?

Kode adalah pisau tajam: powerful, tapi tidak untuk semuanya. Pertimbangkan alternatif bila:

  • Node bawaan sudah sanggup: Set, Merge, Filter, dan Remove Duplicates menyelesaikan 70% transformasi tanpa satu baris kode — workflow yang mudah dibaca rekan tim.
  • Logikanya jadi inti bisnis yang sering berubah: taruh aturan di data (spreadsheet/field) dan biarkan node membacanya — bukan menguburnya di kode.
  • Butuh library eksternal berat: environment node Code punya batasan paket; kebutuhan serius di luar itu sebaiknya lewat HTTP Request ke service kecil terpisah.

Aturan praktis yang sehat: node visual untuk alur utama, node Code untuk “lem” yang menyambungkan — persis proporsi yang dipakai workflow profesional.

FAQ Singkat

Harus jago JavaScript?
Tidak. Empat pola di artikel ini mencakup mayoritas kebutuhan — dan AI bisa membantu menyusun kode dari deskripsi bahasa biasa.

Python bisa?
Ya, n8n menyediakan mode Python di node Code dengan konsep yang sama; JavaScript tetap paling kaya helper-nya.

Bisa panggil API dari node Code?
Bisa via this.helpers.httpRequest, tapi HTTP Request node lebih disarankan — retry dan timeout-nya sudah diatur rapi.

Kode hilang saat impor template?
Tidak — kode tersimpan di dalam JSON workflow, ikut terbackup dan terimpor bersama.

Data Kompleks, Tetap Tanpa Drama

Node Code (JavaScript) di n8n adalah jembatan antara kemudahan visual dan fleksibilitas penuh. Empat polanya — transformasi per item, agregasi, penggabungan antar sumber, dan routing kondisi — sudah menutup sebagian besar kebutuhan data kompleks yang Anda temui.

Ingin melihat pola-pola ini dipakai dalam sistem nyata, dari node AI sampai publish ke WordPress? Kelas n8n automation untuk WordPress berbonus template siap import memuat workflow lengkap yang sudah memakai teknik-teknik ini — tinggal dibedah dan disesuaikan dengan bisnis Anda.

Buka workflow Anda yang paling menyebalkan — yang selalu perlu rapikan manual — dan coba tulis pola 1 untuk membersihkannya. Dua puluh baris kode kecil sering menggantikan satu jam kerja berulang.

Scroll to Top