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":
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":
- Jumlah total pesanan "booked" (misal: 16 pesanan).
- 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.
- Klik ikon + pada output "false" dari IF Node.
- Cari node Code dan pilih.
Kita sekarang akan bekerja pada cabang 'false' (data 'booked').
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
JavaScriptterpilih.
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.
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 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 bernamaitems. -
let totalBooked = items.length;
Menghitung jumlah total item dalam array.items.lengthakan 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 mengambilorderPrice-nya (ingat, datanya ada di dalam.json!) dan menambahkannya ke totalbookedSum. -
return [{ json: {totalBooked, bookedSum} }];
Kita mengembalikan data dalam format yang dimengerti n8n: Sebuah Array[], berisi satu Objek{}, dengan keyjson, yang berisi hasil Kita:totalBooked(16) danbookedSum(nilai total).
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!
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 (
totalBookeddanbookedSum) ini ke channel Discord tim saya?
Kita 🤵🏻:Ada node n8n untuk itu. Saya akan mengaturnya di langkah selanjutnya.