Bỏ qua, đến nội dung

@digiforce-nc/plugin-workflow-sql

Plugin đăng ký node chạy SQL query trong workflow, mở rộng plugin-workflow. Thực thi câu lệnh SQL trực tiếp trên data source được cấu hình, trả về kết quả dưới dạng mảng rows.

Plugin này làm gì?

Node SQL cho phép viết và thực thi câu lệnh SQL tùy ý trên database. Phù hợp khi cần query phức tạp (JOIN, subquery, CTE) mà các node CRUD tiêu chuẩn không đáp ứng được. Kết quả trả về dưới dạng mảng object.

Sử dụng khi:

  • Query JOIN nhiều bảng
  • Subquery, CTE, window functions
  • Bulk INSERT/UPDATE với logic phức tạp
  • Query trên data source bên ngoài (không phải main DB)

Cấu hình

Tham sốKiểuMô tả
dataSourcestringTên data source (mặc định: main)
sqlstringCâu lệnh SQL (hỗ trợ template biến)
paramsarrayParameterized values (chống SQL injection)

Input / Output

HướngDữ liệuMô tả
InputsqlCâu lệnh SQL với placeholders
InputparamsGiá trị cho placeholders (theo thứ tự)
OutputrowsMảng object kết quả (SELECT)
OutputaffectedRowsSố dòng bị ảnh hưởng (INSERT/UPDATE/DELETE)
OutputfieldsMetadata các cột kết quả

Tính năng chính

#Tính năngChi tiết
1Full SQLHỗ trợ SELECT, INSERT, UPDATE, DELETE, JOIN, subquery
2ParameterizedChống SQL injection bằng parameterized queries
3Template biếnSQL sử dụng biến từ workflow context
4Multi data sourceChọn data source (main, external, ...)
5MetadataTrả về thông tin cột kết quả

Trường hợp sử dụng

#Kịch bảnMô tả
1Báo cáo phức tạpQuery JOIN nhiều bảng, GROUP BY, HAVING cho dashboard
2Bulk updateUPDATE hàng loạt bản ghi theo điều kiện phức tạp
3Query CTEDùng WITH ... AS cho logic đệ quy (cây phòng ban)
4Cross-databaseQuery trên external data source đã kết nối
5Raw performanceQuery tối ưu khi ORM không đáp ứng hiệu suất

Lưu ý quan trọng

  • LUÔN dùng parameterized query khi giá trị đến từ user input - tránh SQL injection
  • Query DDL (CREATE TABLE, ALTER) không được khuyến khích trong workflow
  • Kết quả SELECT trả về tối đa theo cấu hình server (thường 1000 rows)
  • Transaction: mỗi SQL node chạy trong transaction riêng, không share với node khác
  • SQL dialect phụ thuộc vào database engine (PostgreSQL, MySQL, SQLite)

Dependencies

PackageVai trò
@digiforce-nc/plugin-workflowWorkflow engine (peer)
@digiforce-nc/serverServer framework (peer)
@digiforce-nc/databaseDatabase ORM - connection management (peer)

Mục lục chi tiết