Materi 9: Menghitung Pesanan "Booked" (Code Node)

Di materi ini, Kita akan belajar bagaimana n8n menyusun data dan bagaimana menambahkan kode JavaScript kustom untuk melakukan perhitungan menggunakan Code Node.

Alur kerja Kita di Materi 8 sudah menyelesaikan cabang "true" (data processing). Sekarang, Kita akan fokus pada cabang "false" (data booked).

Setelah langkah ini, alur kerja Kita akan memiliki node baru yang terhubung ke output "false":

Diagram alur kerja: IF Node bercabang dua. Cabang 'true' ke Edit Fields, cabang 'false' ke Code Node.

Alur kerja Kita sekarang memiliki node di kedua cabang IF.

Permintaan Nathan (Bagian 2)

Langkah selanjutnya dalam alur kerja Nathan adalah menghitung dua nilai dari pesanan "booked":

  1. Jumlah total pesanan "booked" (misal: 16 pesanan).
  2. Nilai total (jumlah uang) dari semua pesanan "booked" tersebut.

Untuk melakukan perhitungan khusus seperti ini, kita bisa menggunakan Code Node, yang memungkinkan kita menulis kode JavaScript kustom.

Langkah 1: Menambahkan Node "Code"

Kembali ke kanvas n8n Kita. Di Materi 7, node IF Kita mengeluarkan 16 item di cabang "false". Mari kita hubungkan node baru ke sana.

  1. Klik ikon + pada output "false" dari IF Node.
  2. Cari node Code dan pilih.
Menambahkan node baru dari output 'false' IF Node.

Kita sekarang akan bekerja pada cabang 'false' (data 'booked').

Mencari node 'Code' di panel node.

Node 'Code' adalah node yang sangat kuat.

Langkah 2: Mengonfigurasi Node "Code"

Dengan jendela "Code" node terbuka, konfigurasikan parameter ini:

  • Mode: Pilih Run Once for All Items.
  • Language: Pastikan JavaScript terpilih.
Mode Node Code
Node Code memiliki dua mode.
  • Run Once for All Items: (Yang kita pilih) Kode ini berjalan satu kali. Ia menerima semua 16 item 'booked' sekaligus sebagai sebuah grup. Ini sempurna untuk membuat ringkasan/perhitungan total.
  • Run Once for Each Item: Kode ini akan berjalan 16 kali (satu kali untuk setiap item 'booked'). Ini berguna jika Kita ingin memodifikasi setiap item secara individual.
Mengonfigurasi Mode 'Run Once for All Items' dan Bahasa 'JavaScript'.

Mengatur mode agar kode kita berjalan satu kali untuk semua item.

Langkah 3: Memahami Struktur Data n8n

Sebelum kita menulis kode, kita harus tahu format data n8n. Data yang mengalir antar node selalu berupa Array (daftar). Di dalam array itu ada Objek yang berisi data Kita.

Struktur sederhananya seperti ini:

[
  {
    "json": {
      "orderID": 1,
      "orderPrice": 100,
      "orderStatus": "booked"
    }
  },
  {
    "json": {
      "orderID": 2,
      "orderPrice": 150,
      "orderStatus": "booked"
    }
  }
]

Perhatikan bahwa data kita (orderPrice, dll.) ada di dalam key yang disebut json. Ini sangat penting.

Langkah 4: Menulis Kode JavaScript

Salin kode di bawah ini dan tempelkan ke kotak Code di n8n, ganti semua kode yang ada di sana.


let items = $input.all();
let totalBooked = items.length;
let bookedSum = 0;

for (let i=0; i < items.length; i++) {
  bookedSum = bookedSum + items[i].json.orderPrice;
}

return [{ json: {totalBooked, bookedSum} }];
Kode JavaScript disalin ke dalam editor Code Node.

Kode Kita, siap untuk mengeksekusi perhitungan.

Penjelasan Kode Baris per Baris:

  • let items = $input.all();
    Mengambil semua (16) item yang masuk dari cabang "false" dan menyimpannya dalam variabel bernama items.
  • let totalBooked = items.length;
    Menghitung jumlah total item dalam array. items.length akan bernilai 16.
  • let bookedSum = 0;
    Membuat "wadah" (variabel) baru untuk menyimpan total nilai penjualan, dimulai dari 0.
  • for (let i=0; i < items.length; i++) { ... }
    Ini adalah loop (perulangan). Ini akan "mengulangi" kode di dalamnya sebanyak 16 kali (satu kali untuk setiap item).
  • bookedSum = bookedSum + items[i].json.orderPrice;
    Bagian terpenting. Untuk setiap item, kita mengambil orderPrice-nya (ingat, datanya ada di dalam .json!) dan menambahkannya ke total bookedSum.
  • return [{ json: {totalBooked, bookedSum} }];
    Kita mengembalikan data dalam format yang dimengerti n8n: Sebuah Array [], berisi satu Objek {}, dengan key json, yang berisi hasil Kita: totalBooked (16) dan bookedSum (nilai total).
Struktur Data Sangat Penting!
Jika Anda hanya menulis return {totalBooked, bookedSum} (tanpa [{ json: ... }]), n8n akan error. Outputnya harus selalu berupa Array Objek.

Langkah 5: Mengeksekusi & Melihat Hasil

Sekarang, klik Execute step.

Perhatikan outputnya. Inputnya adalah 16 item, tetapi outputnya sekarang hanya 1 item!

Output dari Code Node, menampilkan 1 item dengan 'totalBooked' dan 'bookedSum'.

Node ini 'menyerap' 16 item dan 'mengeluarkan' 1 item baru yang berisi ringkasan Kita.

Kita telah berhasil mengubah 16 baris data menjadi 1 baris ringkasan yang berisi angka yang dibutuhkan Nathan!

Langkah Selanjutnya

Cabang "false" kita sekarang sudah memiliki data ringkasan yang kita inginkan.

Nathan 🙋:

Wow, Code Node ini sangat kuat! Ini berarti jika saya punya sedikit kemampuan JavaScript, saya bisa memperkuat alur kerja saya.

Kita 🤵🏻:

Tepat sekali! Kita bisa beralih dari no-code ke low-code kapanpun kita butuh.

Nathan 🙋:

Sekarang, bagaimana cara saya mengirim hasil perhitungan (totalBooked dan bookedSum) ini ke channel Discord tim saya?

Kita 🤵🏻:

Ada node n8n untuk itu. Saya akan mengaturnya di langkah selanjutnya.