เอกสารประกอบสำหรับปัญหาและคำถามทั่วไปใน node Postgres ใน n8n ซึ่งเป็นแพลตฟอร์ม workflow อัตโนมัติ รวมถึงรายละเอียดของปัญหาและแนวทางแก้ไขที่แนะนำ
ต่อไปนี้เป็นข้อผิดพลาดและปัญหาทั่วไปบางประการเกี่ยวกับ Postgres และขั้นตอนในการแก้ไขหรือแก้ไขปัญหาเหล่านั้น
เติมข้อมูล SQL แบบไดนามิก IN กลุ่มที่มี parameter
ใน Postgres คุณสามารถใช้ SQL ได้ IN โครงสร้างการเปรียบเทียบ เพื่อทำการเปรียบเทียบระหว่างกลุ่มของค่า:
SELECT color, shirt_size FROM shirts WHERE shirt_size IN ('small', 'medium', 'large');
ในขณะที่คุณสามารถใช้ n8n การแสดงออก ในแบบสอบถามของคุณเพื่อเติมค่าในไฟล์ IN กลุ่มนี้รวมกับ parameter แบบสอบถาม ให้การป้องกันพิเศษด้วยการฆ่าเชื้อ input โดยอัตโนมัติ
เพื่อสร้าง IN แบบสอบถามกลุ่มพร้อม parameter แบบสอบถาม:
ตั้งค่า Operation ถึง Execute Query.
ใน Options ให้เลือก Query Parameters.
ใช้ expression เพื่อเลือก array จากข้อมูล input ตัวอย่างเช่น
{{ $json.input_shirt_sizes }}.ใน Query parameter เขียนคำค้นหาของคุณด้วย
INสร้างด้วยวงเล็บว่าง ตัวอย่างเช่น:SELECT color, shirt_size FROM shirts WHERE shirt_size IN ();ภายในของ
INวงเล็บ ใช้ expression เพื่อสร้างตัวยึดตำแหน่งตามดัชนีแบบไดนามิก (เช่น$1,$2และ$3) สำหรับจำนวนรายการใน array parameter การค้นหาของคุณ คุณสามารถทำได้โดยเพิ่มดัชนี array แต่ละรายการทีละรายการ เนื่องจากตัวแปรตัวยึดตำแหน่งมีดัชนี 1 รายการ:SELECT color, shirt_size FROM shirts WHERE shirt_size IN ({{ $json.input_shirt_sizes.map((i, pos) => "$" + (pos+1)).join(', ') }});
ด้วยเทคนิคนี้ n8n จะสร้างจำนวนที่ถูกต้องของ ตัวยึดตำแหน่งคำสั่งที่เตรียมไว้ สำหรับ IN ค่าตามจำนวนรายการใน array ของคุณ
การทำงานกับการประทับเวลาและโซนเวลา
เพื่อหลีกเลี่ยงภาวะแทรกซ้อนกับวิธีที่ n8n และ Postgres ตีความข้อมูลการประทับเวลาและโซนเวลา ให้ปฏิบัติตามคำแนะนำทั่วไปเหล่านี้:
- ใช้ UTC เมื่อจัดเก็บและส่งผ่านวันที่ (Use UTC when storing and passing dates) : การใช้ UTC ช่วยหลีกเลี่ยงความสับสนเกี่ยวกับการแปลงเขตเวลาเมื่อแปลงวันที่ระหว่างการแสดงและระบบต่างๆ
- ตั้งค่าเขตเวลาดำเนินการ (Set the execution timezone) : ตั้งค่าเขตเวลาสากลเป็น n8n โดยใช้อย่างใดอย่างหนึ่ง ตัวแปรสภาพแวดล้อม (สำหรับการโฮสต์ด้วยตนเอง) หรือใน การตั้งค่า (สำหรับคลาวด์ n8n) คุณสามารถตั้งค่าเขตเวลาเฉพาะ workflow ได้ใน การตั้งค่า workflow .
- ใช้รูปแบบ ISO 8601 (Use ISO 8601 format) : เดอะ รูปแบบ ISO 8601 เข้ารหัสวันของเดือน เดือน ปี ชั่วโมง นาที และวินาทีใน string มาตรฐาน n8n ส่งวันที่ระหว่าง node เป็น string และการใช้งาน ลักซอน เพื่อแยกวันที่ หากคุณต้องการส่งไปที่ ISO 8601 อย่างชัดเจน คุณสามารถใช้ไฟล์ Date & Time และรูปแบบที่กำหนดเองที่ตั้งค่าเป็น string
yyyy-MM-dd'T'HH:mm:ss.
ส่งออกคอลัมน์วันที่เป็น string วันที่แทน string วันที่และเวลา ISO
n8n ใช้ pg แพคเกจ เพื่อผสานรวมกับ Postgres ซึ่งส่งผลต่อวิธีที่ n8n ประมวลผลวันที่ การประทับเวลา และประเภทที่เกี่ยวข้องจาก Postgres
ที่ pg แยกวิเคราะห์แพ็คเกจ DATE คุณค่าเข้าไป new Date(row_value) โดยค่าเริ่มต้น ซึ่งสร้างวันที่ตามหลัง string วันที่และเวลา ISO 8601 รูปแบบ เช่น วันที่ 2025-12-25 อาจสร้างวันที่และเวลาต่อยของ 2025-12-25T23:00:00.000Z ขึ้นอยู่กับการตั้งค่าเขตเวลาของอินสแตนซ์
หากต้องการแก้ไขปัญหานี้ ให้ใช้ไฟล์ โพสต์เกรส TO_CHAR ฟังก์ชั่น เพื่อจัดรูปแบบวันที่ให้อยู่ในรูปแบบที่ต้องการ ณ เวลาสืบค้น:
SELECT TO_CHAR(date_col, 'YYYY-MM-DD') AS date_col_as_date FROM table_with_date_col
สิ่งนี้จะสร้างวันที่เป็น string โดยไม่มีส่วนประกอบเวลาหรือเขตเวลา หากต้องการดำเนินการตัวอย่างก่อนหน้านี้ต่อไป โดยระบุวันที่ 2025-12-25 จะผลิต string 2025-12-25 . คุณสามารถหาข้อมูลเพิ่มเติมได้ใน pg เอกสารแพ็คเกจตามวันที่ .

