نود Data Table در N8N
نود Data Table یکی از نودهای کاربردی N8N برای ذخیرهسازی، خواندن، بهروزرسانی و مدیریت دادههای ساختاریافته داخل خود N8N است. این نود زمانی مفید است که بخواهید بدون راهاندازی دیتابیس جداگانه، دادههایی مثل اطلاعات کاربران، وضعیت سفارشها، لاگ پردازشها، تنظیمات داخلی ورکفلو یا صف وظایف را در قالب جدول نگهداری کنید.
با استفاده از Data Table میتوانید در ورکفلوهای خود دادهها را بهصورت ردیف و ستون ذخیره کنید، روی آنها فیلتر بزنید، رکورد جدید بسازید، رکوردهای قبلی را ویرایش کنید و حتی آنها را حذف کنید. این نود برای پروژههای کوچک تا متوسط، نمونهسازی سریع، اتوماسیونهای داخلی و ساخت سیستمهای سبک بسیار کاربردی است.
معرفی نود در N8N
نود Data Table برای کار با جدولهای داده داخلی N8N طراحی شده است. این جدولها شبیه دیتابیسهای ساده عمل میکنند؛ یعنی شما میتوانید ستونهایی با نوع داده مشخص تعریف کنید و سپس از طریق ورکفلوها، دادهها را داخل آنها ذخیره یا بازیابی کنید.
- نام نود: Data Table
- دستهبندی: Action / Data Storage / Core Node
- نوع عملکرد: مدیریت دادههای جدولی در محیط N8N
- نیاز به Credential: معمولاً خیر، چون این نود با Data Table داخلی خود N8N کار میکند
- کاربرد اصلی: ذخیرهسازی، جستجو، بهروزرسانی و حذف دادههای ساختاریافته در ورکفلوها
اهمیت این نود در این است که همیشه لازم نیست برای ذخیره چند داده ساده از دیتابیسهایی مثل PostgreSQL، MySQL، Airtable یا Google Sheets استفاده کنید. در بسیاری از ورکفلوها، یک جدول داخلی سبک میتواند نیاز شما را برطرف کند.
موارد استفاده
نود Data Table در سناریوهای زیادی قابل استفاده است؛ مخصوصاً زمانی که نیاز دارید بین اجرای چندباره ورکفلو، دادهای را ذخیره و بعداً دوباره استفاده کنید.
ذخیره اطلاعات لیدها و فرمها
فرض کنید از طریق Webhook اطلاعات فرم تماس سایت را دریافت میکنید. میتوانید با نود Data Table اطلاعاتی مثل نام، ایمیل، شماره تماس، منبع ورودی و وضعیت پیگیری را در یک جدول ذخیره کنید.
- Webhook اطلاعات فرم را دریافت میکند.
- نود IF بررسی میکند ایمیل معتبر است یا نه.
- نود Data Table رکورد جدید را در جدول Leads ذخیره میکند.
- نود Email یا Telegram به تیم فروش اطلاع میدهد.
جلوگیری از پردازش تکراری دادهها
در بسیاری از اتوماسیونها، لازم است بدانید قبلاً یک آیتم پردازش شده یا نه. مثلاً اگر هر روز لیست مقالات یک سایت را بررسی میکنید، میتوانید شناسه یا لینک مقالات پردازششده را در Data Table ذخیره کنید.
- RSS Feed Read لیست مقالات را میگیرد.
- Data Table بررسی میکند لینک مقاله قبلاً ذخیره شده یا نه.
- اگر جدید بود، مقاله پردازش و در جدول ذخیره میشود.
- اگر تکراری بود، از پردازش آن صرفنظر میشود.
مدیریت وضعیت سفارشها
اگر از فروشگاه، API یا سیستم پرداخت داده دریافت میکنید، میتوانید وضعیت هر سفارش را داخل Data Table نگهداری کنید. مثلاً ستونهایی مثل orderId، customerEmail، status، amount و paidAt داشته باشید.
ساخت صف وظایف داخلی
میتوانید Data Table را بهعنوان یک صف ساده استفاده کنید. هر ردیف یک وظیفه باشد و ستون status نشان دهد که وظیفه در چه مرحلهای است: pending، processing، done یا failed.
ترکیب با نودهای دیگر
- Webhook: دریافت داده و ذخیره آن در جدول
- Schedule Trigger: اجرای زمانبندیشده و خواندن رکوردهای خاص از جدول
- IF: تصمیمگیری بر اساس وجود یا عدم وجود رکورد
- Code: آمادهسازی یا تبدیل داده قبل از ذخیرهسازی
- HTTP Request: دریافت داده از API و ذخیره خروجی در Data Table
- Email / Telegram / Slack: ارسال اعلان بعد از ایجاد یا تغییر رکورد
- Merge: ترکیب دادههای خواندهشده از Data Table با دادههای سایر نودها
پارامترها و تنظیمات
تنظیمات نود Data Table بسته به نسخه N8N و عملیات انتخابشده ممکن است کمی متفاوت باشد، اما ساختار کلی آن حول انتخاب جدول، انتخاب عملیات و تعیین دادهها یا فیلترها میچرخد.
Data Table
- نام پارامتر: Data Table
- نوع داده: انتخابی / String / ID
- توضیح کاربرد: مشخص میکند عملیات روی کدام جدول انجام شود.
- مثال عملی: انتخاب جدول Leads برای ذخیره اطلاعات مشتریان بالقوه.
در این بخش معمولاً میتوانید از لیست جدولهای موجود انتخاب کنید. در برخی نسخهها امکان انتخاب جدول از طریق نام یا شناسه نیز وجود دارد.
Operation
- نام پارامتر: Operation
- نوع داده: انتخابی
- توضیح کاربرد: مشخص میکند نود چه عملیاتی روی جدول انجام دهد.
- مثال عملی: انتخاب Insert برای افزودن ردیف جدید یا Select/Get برای خواندن ردیفها.
عملیاتهای رایج در نود Data Table شامل موارد زیر هستند:
- Get / Select Rows: خواندن یک یا چند ردیف از جدول
- Insert Row / Insert Rows: افزودن یک یا چند ردیف جدید
- Update Row / Update Rows: بهروزرسانی ردیفهای موجود
- Upsert: ایجاد رکورد جدید در صورت نبودن، یا بهروزرسانی در صورت وجود
- Delete Row / Delete Rows: حذف یک یا چند ردیف از جدول
Columns / Fields
- نام پارامتر: Columns یا Fields
- نوع داده: Object / Key-Value / Mapping
- توضیح کاربرد: تعیین میکند چه ستونهایی مقداردهی یا بهروزرسانی شوند.
- مثال عملی: مقداردهی ستون email با مقدار {{$json.email}}.
برای مثال اگر جدول Leads دارای ستونهای name، email، phone و source باشد، میتوانید مقدار هر ستون را از داده ورودی نود قبلی مپ کنید.
- name: {{$json.name}}
- email: {{$json.email}}
- phone: {{$json.phone}}
- source: website-form
Mapping Mode
- نام پارامتر: Mapping Mode
- نوع داده: انتخابی
- توضیح کاربرد: مشخص میکند مقادیر ستونها دستی تنظیم شوند یا بهصورت خودکار از ورودی نود گرفته شوند.
- مثال عملی: اگر نام فیلدهای JSON ورودی دقیقاً با نام ستونهای جدول یکی باشد، میتوان از حالت خودکار استفاده کرد.
در حالت دستی کنترل بیشتری روی ستونها دارید. در حالت خودکار، اگر نام فیلدهای ورودی با ستونهای جدول یکسان باشد، تنظیمات سریعتر انجام میشود.
Filters / Conditions
- نام پارامتر: Filters یا Conditions
- نوع داده: Array / شرط منطقی
- توضیح کاربرد: برای انتخاب، بهروزرسانی یا حذف ردیفهای خاص استفاده میشود.
- مثال عملی: انتخاب ردیفی که مقدار ستون email برابر با user@example.com باشد.
فیلترها معمولاً شامل سه بخش هستند:
- Column: نام ستون مورد بررسی، مثل email یا status
- Operator: عملگر شرطی، مثل برابر است با، شامل است، بزرگتر از، کوچکتر از
- Value: مقداری که باید با داده ستون مقایسه شود
نمونه شرط:
- Column: status
- Operator: equals
- Value: pending
Return All
- نام پارامتر: Return All
- نوع داده: Boolean
- توضیح کاربرد: اگر فعال باشد، همه ردیفهای مطابق شرط برگردانده میشوند.
- مثال عملی: دریافت همه سفارشهایی که status آنها برابر pending است.
برای جدولهای بزرگ، فعالکردن Return All میتواند باعث مصرف بیشتر منابع شود. بهتر است در صورت نیاز از Limit استفاده شود.
Limit
- نام پارامتر: Limit
- نوع داده: Number
- توضیح کاربرد: تعداد رکوردهای خروجی را محدود میکند.
- مثال عملی: دریافت فقط 50 ردیف اول از جدول وظایف معلق.
Sort / Order
- نام پارامتر: Sort یا Order
- نوع داده: Object / انتخابی
- توضیح کاربرد: ترتیب خروجی را بر اساس یک ستون مشخص میکند.
- مثال عملی: مرتبسازی سفارشها بر اساس createdAt بهصورت نزولی.
در سناریوهای زمانمحور، مرتبسازی بر اساس ستون تاریخ بسیار کاربردی است. مثلاً میتوانید جدیدترین رکوردها را اول دریافت کنید.
Match Column
- نام پارامتر: Match Column
- نوع داده: String / انتخابی
- توضیح کاربرد: در عملیاتهایی مثل Update یا Upsert مشخص میکند رکورد بر اساس کدام ستون شناسایی شود.
- مثال عملی: استفاده از ستون email برای جلوگیری از ثبت تکراری یک کاربر.
برای استفاده از Upsert، معمولاً باید یک ستون یکتا یا قابل اعتماد برای تشخیص رکورد انتخاب شود؛ مثل email، userId، orderId یا invoiceNumber.
Data to Send / Values
- نام پارامتر: Data to Send یا Values
- نوع داده: Object
- توضیح کاربرد: دادههایی را مشخص میکند که باید در جدول درج یا بهروزرسانی شوند.
- مثال عملی: ثبت مقدار paid برای ستون status بعد از تأیید پرداخت.
Continue On Fail
- نام پارامتر: Continue On Fail
- نوع داده: Boolean
- توضیح کاربرد: اگر فعال باشد، در صورت خطا، اجرای ورکفلو متوقف نمیشود و خطا در خروجی آیتم قرار میگیرد.
- مثال عملی: هنگام پردازش دستهای کاربران، اگر یک رکورد مشکل داشت، سایر رکوردها همچنان پردازش شوند.
نکات مهم هنگام پیکربندی
- نام ستونهای جدول را دقیق و بدون اشتباه وارد کنید.
- نوع داده ورودی باید با نوع ستون سازگار باشد؛ مثلاً مقدار عددی برای ستون Number و مقدار true یا false برای Boolean.
- برای عملیات Update و Delete همیشه فیلتر دقیق تعریف کنید تا رکوردهای اشتباه تغییر نکنند.
- برای جلوگیری از داده تکراری، از ستونهای یکتا مثل email، orderId یا userId استفاده کنید.
- اگر حجم داده زیاد است، از Limit و فیلترهای دقیق استفاده کنید.
- برای تاریخها بهتر است از فرمت استاندارد ISO 8601 استفاده شود، مثل 2026-05-31T10:30:00.000Z.
ورودیها و خروجیها
نود Data Table معمولاً داده ورودی را از نود قبلی دریافت میکند و بر اساس عملیات انتخابشده، آن را در جدول ذخیره میکند یا از آن برای فیلتر، بهروزرسانی و حذف استفاده میکند.
ورودی نود
ورودی میتواند یک یا چند آیتم JSON باشد. هر آیتم میتواند شامل فیلدهایی باشد که قرار است در ستونهای جدول ذخیره شوند.
{ "name": "Ali Ahmadi", "email": "ali@example.com", "phone": "09120000000", "source": "website", "status": "new"}اگر این داده از یک Webhook دریافت شده باشد، میتوانید هر فیلد را به ستون متناظر در Data Table مپ کنید.
نمونه جدول
| id | name | phone | source | status | |
|---|---|---|---|---|---|
| 1 | Ali Ahmadi | ali@example.com | 09120000000 | website | new |
| 2 | Sara Karimi | sara@example.com | 09350000000 | contacted |
خروجی در عملیات Insert
بعد از درج رکورد، خروجی معمولاً شامل داده ثبتشده در جدول است. بسته به نسخه N8N و ساختار Data Table، ممکن است شناسه داخلی ردیف یا ستونهای سیستمی نیز در خروجی وجود داشته باشد.
{ "id": 1, "name": "Ali Ahmadi", "email": "ali@example.com", "phone": "09120000000", "source": "website", "status": "new"}خروجی در عملیات Select یا Get
در عملیات خواندن، خروجی شامل ردیفهای پیدا شده بر اساس فیلترها است.
[ { "id": 1, "name": "Ali Ahmadi", "email": "ali@example.com", "status": "new" }, { "id": 3, "name": "Reza Moradi", "email": "reza@example.com", "status": "new" }]خروجی در عملیات Update
در عملیات بهروزرسانی، خروجی معمولاً شامل رکوردهای بهروزرسانیشده یا گزارشی از نتیجه عملیات است.
{ "id": 1, "email": "ali@example.com", "status": "contacted", "updatedAt": "2026-05-31T10:30:00.000Z"}خروجی در عملیات Delete
در عملیات حذف، خروجی ممکن است شامل رکورد حذفشده، تعداد ردیفهای حذفشده یا وضعیت موفقیت عملیات باشد.
{ "success": true, "deletedRows": 1}نکات پیشرفته و ترفندها
استفاده از Data Table بهعنوان کش داخلی
اگر در ورکفلوهایتان مرتباً یک API خارجی را صدا میزنید، میتوانید نتیجه برخی درخواستها را در Data Table ذخیره کنید. در اجرای بعدی ابتدا جدول را بررسی کنید؛ اگر داده موجود بود از همان استفاده کنید و اگر نبود درخواست API ارسال شود.
- کاهش تعداد درخواستهای API
- افزایش سرعت اجرای ورکفلو
- کاهش هزینه سرویسهای خارجی
ساخت سیستم جلوگیری از داده تکراری
قبل از درج رکورد جدید، با عملیات Get بررسی کنید آیا رکوردی با همان email یا orderId وجود دارد یا نه. اگر وجود داشت، با IF مسیر را به Update ببرید و اگر وجود نداشت، Insert انجام دهید.
- Data Table Get با فیلتر email
- IF بررسی تعداد خروجی
- Insert در صورت نبود رکورد
- Update در صورت وجود رکورد
استفاده از Upsert برای سادهسازی ورکفلو
اگر نسخه N8N شما عملیات Upsert را پشتیبانی کند، میتوانید بهجای ترکیب Get، IF، Insert و Update از یک عملیات واحد استفاده کنید. این کار ورکفلو را سادهتر و نگهداری آن را آسانتر میکند.
مدیریت وضعیت پردازش با ستون status
یکی از بهترین الگوها برای کار با Data Table اضافه کردن ستون status است. این ستون میتواند وضعیت هر رکورد را مشخص کند.
- pending: در انتظار پردازش
- processing: در حال پردازش
- done: پردازش موفق
- failed: پردازش ناموفق
با این روش میتوانید یک سیستم پردازش مرحلهای بسازید که هر بار فقط رکوردهای pending را دریافت کند.
ثبت لاگ اجرای ورکفلو
میتوانید در پایان هر ورکفلو نتیجه اجرا را در Data Table ذخیره کنید. برای مثال نام ورکفلو، زمان اجرا، وضعیت، پیام خطا و تعداد آیتمهای پردازششده را ثبت کنید.
{ "workflowName": "Daily Order Sync", "status": "success", "processedItems": 120, "failedItems": 2, "executedAt": "2026-05-31T09:00:00.000Z"}استفاده از Expression برای مقداردهی پویا
در N8N میتوانید تقریباً در همه فیلدهای Data Table از Expression استفاده کنید. چند نمونه کاربردی:
- ایمیل از ورودی: {{$json.email}}
- زمان فعلی: {{$now}}
- وضعیت ثابت: new
- شناسه ترکیبی: {{$json.userId + “-” + $json.orderId}}
بهینهسازی عملکرد در جدولهای بزرگ
- همیشه فیلتر دقیق تعریف کنید.
- از Return All فقط زمانی استفاده کنید که واقعاً به همه رکوردها نیاز دارید.
- رکوردهای قدیمی یا غیرضروری را دورهای پاکسازی کنید.
- در ورکفلوهای سنگین، پردازش را با Split In Batches یا Loop Over Items مرحلهبندی کنید.
- برای دادههای بسیار حجیم یا گزارشگیری پیچیده، از دیتابیسهای تخصصی مثل PostgreSQL استفاده کنید.
محدودیتها و خطاها
محدودیتهای نود Data Table
- برای جایگزینی کامل دیتابیسهای حرفهای طراحی نشده است.
- برای دادههای بسیار حجیم یا کوئریهای پیچیده انتخاب ایدهآل نیست.
- امکانات پیشرفته دیتابیس مثل Join پیچیده، ایندکسگذاری سفارشی، تراکنشهای پیچیده و گزارشگیری سنگین را ندارد.
- ساختار ستونها باید از قبل با دقت طراحی شود.
- در بعضی نسخهها، امکانات نود ممکن است محدودتر یا در حال توسعه باشد.
- وابسته به محیط N8N است؛ بنابراین برای اشتراکگذاری داده با سیستمهای بیرونی باید از API، Webhook یا نودهای دیگر استفاده شود.
خطای انتخاب نشدن جدول
اگر جدول مشخص نشده باشد یا جدول حذف شده باشد، نود نمیتواند اجرا شود.
- علت: انتخاب نکردن Data Table یا تغییر نام/حذف جدول.
- راهحل: جدول درست را دوباره انتخاب کنید و مطمئن شوید در محیط N8N وجود دارد.
خطای ناسازگاری نوع داده
اگر مقدار ورودی با نوع ستون سازگار نباشد، عملیات ممکن است با خطا مواجه شود.
- علت: ارسال متن به ستون عددی، ارسال مقدار نامعتبر به ستون تاریخ یا Boolean.
- راهحل: قبل از Data Table از نود Code یا Set برای تبدیل نوع داده استفاده کنید.
خطای ستون نامعتبر
اگر نام ستونی که در Mapping یا Filter استفاده کردهاید در جدول وجود نداشته باشد، نود خطا میدهد.
- علت: اشتباه تایپی در نام ستون یا تغییر ساختار جدول.
- راهحل: نام ستونها را با ساختار واقعی جدول تطبیق دهید.
بهروزرسانی یا حذف اشتباه چند رکورد
اگر فیلتر Update یا Delete خیلی عمومی باشد، ممکن است چندین ردیف ناخواسته تغییر کند یا حذف شود.
- علت: استفاده از شرط مبهم مثل status = pending بدون محدودیت بیشتر.
- راهحل: برای عملیات حساس از شناسه یکتا مثل id، orderId یا email استفاده کنید.
داده تکراری
اگر قبل از Insert بررسی نکنید که رکورد وجود دارد یا نه، ممکن است دادههای تکراری ساخته شود.
- علت: ثبت مستقیم داده بدون فیلتر یا Upsert.
- راهحل: قبل از Insert از Get و IF استفاده کنید یا در صورت پشتیبانی، عملیات Upsert را به کار ببرید.
خروجی خالی در عملیات Get
گاهی عملیات Get بدون خطا اجرا میشود اما خروجی خالی است.
- علت: شرط فیلتر با هیچ رکوردی مطابقت ندارد.
- راهحل: مقدار فیلتر را بررسی کنید، به فاصلهها، حروف بزرگ و کوچک و نوع داده توجه کنید.
ایده ها
- سیستم CRM سبک: ذخیره لیدها، وضعیت پیگیری، مسئول فروش و تاریخ آخرین تماس در Data Table.
- مانیتورینگ پردازشها: ثبت وضعیت اجرای ورکفلوها، تعداد آیتمهای موفق و خطاها برای تحلیل داخلی.
- سیستم ضد تکرار محتوا: ذخیره لینک محتواهای پردازششده برای جلوگیری از انتشار یا پردازش مجدد.
- مدیریت صف ارسال پیام: ذخیره پیامهای در انتظار ارسال و تغییر وضعیت آنها پس از ارسال موفق یا ناموفق.
- پنل تنظیمات داخلی ورکفلو: نگهداری مقادیر قابل تغییر مثل آستانهها، کلیدهای دستهبندی، لیست مجاز کاربران یا تنظیمات کمپین.
