$input.item คือตัวแปรที่ใช้เข้าถึงรายการข้อมูลปัจจุบันที่กำลังประมวลผล โดยให้ข้อมูลครบถ้วนกว่า $json เพราะรวมทั้ง json data, binary files และ pairing info ไว้ด้วยกัน ส่วนใหญ่ใช้ $json ก็เพียงพอ แต่ $input.item จำเป็นเมื่อต้องการเข้าถึงไฟล์ binary หรือ track ความสัมพันธ์ระหว่าง items
=$input.item
=$input.item
เข้าถึง binary data (ไฟล์รูปภาพ, PDF, documents)
ทำ item linking ระหว่าง nodes เพื่อ track relationship
Debug workflow โดยดู item structure ทั้งหมด
Advanced operations ที่ต้องการข้อมูลนอกเหนือจาก JSON
{{ $input.item.json.userId }}={{ $input.item.json.userId }}
12345
{{ $input.item.binary ? 'Has file attachment' : 'No file' }}={{ $input.item.binary ? 'Has file attachment' : 'No file' }}
Has file attachment
{{ $input.item.binary.data.mimeType }}={{ $input.item.binary.data.mimeType }}
application/pdf
{{ Object.keys($input.item) }}={{ Object.keys($input.item) }}
["json", "binary", "pairedItem"]
{{ $input.item.pairedItem.item }}={{ $input.item.pairedItem.item }}
ส่วนใหญ่ใช้ $json เพราะสั้นกว่าและเข้าถึง JSON data ได้โดยตรง ใช้ $input.item เมื่อต้องการ: (1) เข้าถึง binary data สำหรับไฟล์ (2) ใช้ pairedItem สำหรับ track relationship (3) debug เพื่อดู item structure ทั้งหมด (4) ต้องการเขียน code ที่ชัดเจนว่ากำลังทำงานกับ item object
ใช่ครับ ทั้งสองชี้ไปที่ object เดียวกันเลย $json เป็น shortcut ของ $input.item.json ที่ n8n สร้างมาให้ใช้งานสะดวกขึ้น เหมือนกับการเขียน this.property vs property ใน OOP ดังนั้นใช้ $json ได้เลยสำหรับ JSON data
$input.item.binary เป็น object ที่เก็บไฟล์ binary ต่างๆ โดย key คือชื่อไฟล์ (เช่น ‘data’, ‘attachment’) และ value เก็บ metadata ได้แก่ mimeType (ประเภทไฟล์), fileExtension, fileSize, fileName และ data ที่เป็น base64 encoded content ของไฟล์
pairedItem เก็บข้อมูลอ้างอิงกลับไปยังรายการต้นทางใน node ก่อนหน้า ซึ่งมีประโยชน์มากใน workflow ที่ซับซ้อน โดยเฉพาะเมื่อใช้ Merge, Split In Batches หรือ Loop nodes เพราะช่วยให้ติดตามได้ว่าผลลัพธ์แต่ละตัวมาจากข้อมูลต้นทางตัวไหน
$input.item เป็นตัวแปรที่เข้าถึง item object ปัจจุบันแบบเต็มรูปแบบใน n8n workflow
ที่ต้องเข้าใจคือ item object มี 3 ส่วนหลัก: (1) json – ข้อมูล JSON ที่เราใช้บ่อยที่สุด (2) binary – ไฟล์ binary เช่น รูปภาพ, PDF, Excel (3) pairing – ข้อมูลการเชื่อมต่อระหว่าง items ใน different nodes
ส่วนใหญ่ workflow ใช้แค่ json data ดังนั้น $json ก็เพียงพอและสั้นกว่า แต่ถ้าทำงานกับไฟล์ ต้องใช้ $input.item.binary แทน เพราะ $json ไม่มี binary data
ที่เจ๋งคือ $input.item.json กับ $json ชี้ไปที่ object เดียวกันเลย ดังนั้นถ้าต้องการแค่ JSON data ใช้ $json โดยตรงสะดวกกว่าครับ
ส่วนตัวผมใช้ $input.item เวลา debug workflow เพื่อดู structure ทั้งหมดของ item หรือเวลาทำงานกับ HTTP Request node ที่ดึงไฟล์มา ซึ่งไฟล์จะอยู่ใน binary property 😎