hasField() คือ method ที่ใช้ตรวจสอบว่าอ็อบเจ็กต์มี field หรือ key ที่ระบุหรือไม่ คืนค่า true ถ้ามี field นั้น false ถ้าไม่มี มีประโยชน์สำหรับป้องกัน error เวลาเข้าถึง field ที่อาจจะไม่มีอยู่
=$json.hasField('fieldName')
=$json.hasField('fieldName')
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| fieldName | String | Yes | ชื่อ field หรือ key ที่ต้องการตรวจสอบว่ามีอยู่ใน object หรือไม่ |
General usage
{{ $json.hasField('email') }}={{ $json.hasField('email') }}
true or false
{{ $json.hasField('phone_number') }}={{ $json.hasField('phone_number') }}
true or false
{{ $json.hasField('firstName') && $json.hasField('lastName') }}={{ $json.hasField('firstName') && $json.hasField('lastName') }}
true or false
{{ $json.hasField('customField') ? $json.customField : 'No custom field' }}={{ $json.hasField('customField') ? $json.customField : 'No custom field' }}
String
{{ $json.user.hasField('email') }}={{ $json.user.hasField('email') }}
true or false
hasField() คืนค่า true/false อย่างชัดเจน ถ้าคุณต้องการตรวจสอบแล้ว branch logic อื่น ก็เหมาะสุด optional chaining ใช้ดีตอนที่คุณแค่อยากเข้าถึง field แบบปลอดภัยโดยไม่ error
hasField() ตรวจสอบการมีอยู่ของ key เท่านั้น แม้ว่าค่าจะเป็น null ก็จะคืนค่า true หากมี key นั้น ถ้าหากต้องการตรวจสอบว่าค่าเป็น null หรือไม่ ลองใช้ !== null แยกต่อไป
hasField() ใช้กับ object (key-value pair) เท่านั้น ถ้าต้องการตรวจสอบว่า array มี element บ้าง ลองใช้ .length > 0 หรือ .includes() แทนครับ
ถ้าเข้าถึงโดยตรงแล้ว field ไม่มีอยู่ คุณจะได้ undefined ซึ่งอาจทำให้ workflow error ได้ hasField() ช่วยให้คุณเช็คก่อนตัดสินใจว่าจะทำอะไรต่อไป ป้องกัน error ได้ดีเลย
hasField() เป็น n8n object method ที่ช่วยตรวจสอบการมีอยู่ของ field ใน object ได้อย่างปลอดภัย แทนที่จะพยายามเข้าถึง field โดยตรงแล้วเสี่ยงจะได้ undefined
ที่เจ๋งคือมันทำให้คุณสามารถเขียน conditional logic ที่ปลอดภัยได้ โดยไม่ต้องกังวลว่า field ที่ต้องการจะหายไปหรือไม่ ยิ่งเวลาทำงานกับ API response หรือ JSON data จากหลายที่ก็ยิ่งจำเป็นเลย
ส่วนตัวผมใช้ hasField() บ่อยมากในการตัดสินใจว่าจะทำ transformation ต่อหรือไม่ สมมติว่าข้อมูลจาก API มี field ’email’ บ้างไม่มีบ้าง ก็ใช้ hasField(’email’) เพื่อไป branch ต่างกันไป 😎