Materi 15: Memahami Struktur Data n8n
Di bab ini, Kita akan mempelajari "bahasa" yang digunakan n8n untuk berbicara antar node. Kita akan membedah struktur data n8n dan belajar menggunakan Code Node untuk memanipulasi data tersebut.
Konsep Dasar: ETL
Secara mendasar, node n8n berfungsi sebagai alat ETL:
- Extract (Ekstrak): Mengambil data dari sumber.
- Transform (Ubah): Memodifikasi data tersebut.
- Load (Muat): Mengirimkannya ke tempat yang dibutuhkan.
Agar data bisa bergerak mulus dari satu node ke node lain, data tersebut harus dalam format yang dimengerti oleh n8n. Format wajib itu adalah: Array of Objects (Daftar Objek).
Apa itu Array of Objects?
["Merah", "Kuning", "Hijau"].Object (Benda): Kumpulan pasangan kunci-nilai. Contoh:
{ "nama": "Naufal", "role": "Developer" }.
Di n8n, data yang dikirim antar node selalu berupa
Array yang berisi Objek. Dan
setiap objek tersebut harus dibungkus dalam kunci (key) bernama
json.
Contoh struktur data n8n yang valid:
[
{
"json": {
"name": "Michelangelo",
"color": "orange"
}
},
{
"json": {
"name": "Donatello",
"color": "purple"
}
}
]
Setiap item data dibungkus dalam properti 'json'.
Latihan 1: Membuat Data Set dengan Code Node
Mari kita praktikkan! Kita bisa menggunakan Code Node untuk membuat data buatan (dummy) untuk simulasi.
Tambahkan Code Node ke kanvas Kita dan coba buat struktur data kontak (nama dan email) menggunakan JavaScript.
👉 Lihat Kunci Jawaban & Cara Mengerjakan
Di dalam Code Node, masukkan kode JavaScript berikut:
var myContacts = [
{
json: {
name: 'Alice',
email: {
personal: 'alice@home.com',
work: 'alice@wonderland.org'
},
}
},
{
json: {
name: 'Bob',
email: {
personal: 'bob@mail.com',
work: 'contact@thebuilder.com'
},
}
},
];
return myContacts;
Klik Execute Node. Hasilnya akan terlihat seperti ini:
Kita berhasil membuat struktur data n8n secara manual.
Latihan 2: Mereferensikan Data Node
Sama seperti kita menggunakan Expression di Level 1, kita juga bisa mengakses data menggunakan JavaScript di Code Node.
Sambungkan Code Node kedua setelah Code Node
pertama tadi. Cobalah tulis kode untuk mengambil email kerja (work
email) dari item pertama dan menyimpannya di kolom baru
workEmail.
👉 Lihat Kunci Jawaban & Cara Mengerjakan
Masukkan kode berikut di Code Node kedua:
let items = $input.all();
// Menambahkan properti baru 'workEmail' ke item pertama
// Menggunakan dot notation untuk mengakses nested object
items[0].json.workEmail = items[0].json.email['work'];
return items;
Memanipulasi data menggunakan JavaScript dot notation.
Latihan 3: Transformasi Data (Kasus Nyata: PokéAPI)
Seringkali, API mengembalikan data dalam format yang "salah" untuk n8n (misalnya: satu objek besar berisi array, bukan array of objects). Kita perlu mentransformasi data tersebut agar setiap item bisa diproses secara individual.
Mari kita coba dengan PokéAPI.
Tantangan:
-
Gunakan node HTTP Request untuk mengambil data
dari
https://pokeapi.co/api/v2/pokemon. - Perhatikan outputnya (hanya 1 item dengan array 'results').
- Gunakan node Split Out ATAU Code Node untuk memecahnya menjadi 20 item terpisah.
👉 Lihat Kunci Jawaban & Cara Mengerjakan
Langkah 1: Mengambil Data
Konfigurasi HTTP Request:
- Metode: GET
- URL:
https://pokeapi.co/api/v2/pokemon
Masalah: n8n hanya melihat 1 item berisi array.
Solusi A: Node "Split Out" (No-Code)
Tambahkan node Split Out:
-
Field to split out:
results(seret dari panel input).
Solusi: Data terpecah menjadi 20 item individual.
Solusi B: Code Node (Low-Code)
Gunakan JavaScript .map():
// Mengambil array 'results' dari item pertama
const results = $input.first().json.results;
// Memetakan ulang (map) menjadi format n8n yang benar
return results.map(pokemon => {
return {
json: pokemon
}
});
Ringkasan
Kita 🤵🏻:Sekarang saya mengerti kenapa struktur data itu penting. Jika formatnya salah (seperti 1 item berisi array), node selanjutnya tidak akan memprosesnya dengan benar (looping).
Di materi selanjutnya, kita akan belajar cara menangani tipe data yang lebih spesifik seperti HTML, XML, dan data biner (file).