$input.first() ดึงเฉพาะ item แรกสุดจากข้อมูลที่เข้ามาใน node ปัจจุบัน ใช้เมื่อต้องการ configuration, header row หรือข้อมูลอ้างอิงที่อยู่ตำแหน่งแรกเสมอ return เป็น item object เดียว (ไม่ใช่ array) ถ้าไม่มี items จะได้ undefined
=$input.first()
=$input.first()
ดึง configuration หรือ settings จาก item แรกก่อน process items อื่น
Extract header row จาก CSV/Excel ที่แปลงมาเป็น JSON
ดึง metadata หรือ summary information ที่อยู่ item แรกเสมอ
Validation ว่ามีข้อมูลเข้ามาหรือไม่โดยเช็ค item แรก
{{ $input.first().json.apiKey }}={{ $input.first().json.apiKey }}
sk-xxxx1234
{{ $input.first().json.headers.join(', ') }}={{ $input.first().json.headers.join(', ') }}
Name, Email, Phone
{{ $input.first()?.json?.email ?? 'no-email@example.com' }}={{ $input.first()?.json?.email ?? 'no-email@example.com' }}
user@example.com หรือ no-email@example.com
{{ $input.first() ? 'Ready to process' : 'No data' }}={{ $input.first() ? 'Ready to process' : 'No data' }}
Ready to process
จะได้ undefined กลับมาครับ ถ้าพยายามเข้าถึง .json ต่อจะเกิด error ทันที ดังนั้นควรใช้ optional chaining ($input.first()?.json) หรือเช็คด้วย ternary operator ก่อนเข้าถึงข้อมูลเสมอนะครับ 😅
ผลลัพธ์เหมือนกันครับ แต่ $input.first() อ่านชัดเจนกว่าว่าเราต้องการ item แรก และ handle edge case ดีกว่า ถ้าไม่มี items จะได้ undefined ส่วน $input.all()[0] จะได้ undefined เหมือนกัน แต่โค้ดยาวกว่า
ได้ครับ แต่ใน Python ใช้ _input.first แทน (underscore แทน $) และเป็น property ไม่ใช่ method ดังนั้นไม่ต้องใส่วงเล็บ เช่น first_item = _input.first
$input.first() เป็นเมธอดสำหรับดึงข้อมูลรายการแรกสุดจากอินพุตของโหนดปัจจุบัน
ที่เจ๋งคือมันคืนค่าเป็นออบเจ็กต์รายการเดี่ยวๆ ไม่ใช่อาร์เรย์เหมือน $input.all() ทำให้ใช้งานง่ายกว่าเวลาต้องการแค่ข้อมูลชิ้นเดียว ไม่ต้องมานั่งใส่วงเล็บศูนย์อีกทีครับ
ส่วนตัวผมใช้บ่อยมากในรูปแบบที่มีโหนดตั้งค่าส่งคอนฟิกมาก่อน เช่น คีย์เอพีไอ การตั้งค่าต่างๆ แล้วค่อยประมวลผลข้อมูลในโหนดถัดไป การใช้เมธอดนี้ทำให้โค้ดอ่านง่ายและชัดเจนว่าเราต้องการแค่รายการแรกจริงๆ
ที่ต้องระวังคือถ้าไม่มีรายการเลย จะคืนค่าว่างเปล่า ดังนั้นควรเช็คด้วยเครื่องหมายคำถามจุดก่อนเข้าถึงข้อมูลนะครับ 😎