نود Limit در N8N
نود Limit یکی از سادهترین و در عین حال کاربردیترین نودهای n8n است که به شما کمک میکند تعداد آیتمهایی (Items) را که از یک مرحله عبور میکنند کنترل کنید. این نود وقتی داده زیادی دارید و میخواهید فقط بخشی از آن را برای تست، نمونهگیری، ساخت گزارش، یا جلوگیری از فشار روی سرویسهای بعدی ارسال کنید، بسیار مفید است.
معرفی نود در N8N
نود Limit برای محدود کردن تعداد آیتمهای خروجی از یک جریان داده استفاده میشود. اگر یک نود قبلی 1000 آیتم تولید کند، با Limit میتوانید مثلاً فقط 10 آیتم را به مرحله بعد بفرستید.
- کارکرد اصلی: کاهش تعداد Items عبوری از ورکفلو
- دستهبندی نود: Function (نودهای کمکی/منطقی برای پردازش جریان داده)
- اهمیت در ورکفلو: افزایش کنترل، کاهش هزینه و زمان اجرا، مناسب برای تست و جلوگیری از Rate Limit سرویسها
موارد استفاده
1) تست سریع ورکفلو روی چند رکورد اول
فرض کنید از Google Sheets یا Notion لیستی از مشتریان را میگیرید و میخواهید قبل از ارسال ایمیل به همه، فقط روی 3 مورد اول تست کنید:
- Google Sheets (Read) → Limit (3) → Gmail (Send)
2) جلوگیری از فشار روی API و مدیریت محدودیت نرخ (Rate Limit)
اگر یک API در هر دقیقه فقط تعداد محدودی درخواست قبول میکند، میتوانید خروجی را محدود کنید و بقیه را در اجرای بعدی پردازش کنید:
- HTTP Request (Fetch 500 items) → Limit (50) → HTTP Request (Process each)
3) نمونهگیری (Sampling) برای گزارشگیری یا بررسی کیفیت داده
وقتی از دیتابیس هزاران ردیف دریافت میکنید و میخواهید فقط نمونهای را برای بررسی دستی ببینید:
- Postgres (Select) → Limit (20) → Spreadsheet File (Export) یا Slack (Send message)
4) ساخت دموی محصول یا آموزش
برای نمایش خروجی ورکفلو در یک محیط آموزشی، بهتر است داده محدود باشد تا خروجی قابل فهم بماند:
- Webhook → Code/Set → Limit (5) → Respond to Webhook
5) ترکیب با نودهای دیگر برای ورکفلوهای عملی
- Limit + Split in Batches: اگر میخواهید فقط تعداد مشخصی از آیتمها را پردازش کنید و همانها را به صورت batch جلو ببرید.
- Limit + IF: ابتدا با IF دادهها را فیلتر کنید، سپس فقط تعداد محدودی از نتایج فیلترشده را عبور دهید.
- Limit + Merge: خروجی محدودشده را با یک جریان دیگر ادغام کنید (مثلاً فقط 10 سفارش آخر را با اطلاعات مشتری Merge کنید).
پارامترها و تنظیمات
نود Limit معمولاً تنظیمات کمی دارد، اما همانها باید دقیق انتخاب شوند تا نتیجه درست بگیرید.
فیلدها و پارامترها
- Limit
- نوع داده: Number (عدد صحیح)
- کاربرد: مشخص میکند چند آیتم از ابتدای لیست آیتمهای ورودی به خروجی بروند.
- مثال عملی: اگر 200 آیتم ورودی دارید و Limit را روی 10 بگذارید، فقط 10 آیتم اول عبور میکنند.
- مثال با Expression: مقدار Limit را از یک فیلد تنظیماتی یا ورودی بگیرید، مثل: {{$json.limit}}
نکات مهم هنگام پیکربندی
- Limit فقط از ابتدا برمیدارد: این نود آیتمها را «انتخاب تصادفی» نمیکند؛ آیتمهای اول را عبور میدهد. اگر ترتیب مهم است، قبل از Limit داده را Sort کنید (مثلاً در نود دیتابیس با ORDER BY یا با Code).
- Limit جایگزین Pagination نیست: اگر هدف شما دریافت صفحهبهصفحه داده از API است، باید Pagination را در همان نود منبع (مثل HTTP Request) تنظیم کنید. Limit فقط خروجی را کم میکند.
- برای تست، مقدار کم انتخاب کنید: مثل 1، 3 یا 5؛ بعد از اطمینان، Limit را حذف کنید یا افزایش دهید.
ورودیها و خروجیها
ورودی (Input)
این نود هر تعداد آیتم را از نود قبلی دریافت میکند. هر آیتم در n8n معمولاً یک شیء JSON است.
خروجی (Output)
خروجی دقیقاً همان ساختار آیتمهای ورودی را حفظ میکند، اما تعداد آنها را به مقدار Limit کاهش میدهد. هیچ فیلدی تغییر نمیکند و داده Transform نمیشود.
نمونه ساختار JSON
ورودی فرضی (5 آیتم):
[ { "id": 1, "name": "Ali" }, { "id": 2, "name": "Sara" }, { "id": 3, "name": "Reza" }, { "id": 4, "name": "Mina" }, { "id": 5, "name": "Nima" }]خروجی با Limit = 2:
[ { "id": 1, "name": "Ali" }, { "id": 2, "name": "Sara" }]نکات پیشرفته و ترفندها
1) محدودسازی هوشمند با Expression
اگر میخواهید در محیط Production تعداد پردازش را محدود کنید اما در حالت تست کمتر باشد، میتوانید Limit را دینامیک کنید. مثال:
{{$env.N8N_ENV === 'production' ? 100 : 5}}در این حالت در محیط production تا 100 آیتم و در محیط غیرproduction فقط 5 آیتم عبور میکند.
2) کنترل هزینه و زمان اجرا در ورکفلوهای سنگین
اگر بعد از این نود قرار است پردازش سنگینی انجام شود (مثلاً تولید فایل، ارسال پیام، یا چند درخواست HTTP)، Limit یک راه ساده برای کاهش زمان اجرا و ریسک شکست است، مخصوصاً در مرحله تست.
3) ترکیب با Sort برای گرفتن «جدیدترینها»
چون Limit آیتمهای اول را عبور میدهد، برای گرفتن جدیدترین رکوردها ابتدا باید داده را مرتب کنید:
- Database Select (ORDER BY created_at DESC) → Limit (10)
یا اگر داده از API آمده و نیاز به مرتبسازی دارید:
- HTTP Request → Code (sort) → Limit
4) محدودسازی قبل از اجرای حلقهها
اگر از Split in Batches یا پردازش «برای هر آیتم» استفاده میکنید، قرار دادن Limit قبل از آن باعث میشود تعداد اجرای مراحل بعدی دقیقاً کنترل شود:
- Items → Limit (50) → Split in Batches (10) → Process
محدودیتها و خطاها
محدودیتها
- عدم پشتیبانی از انتخاب تصادفی: Limit فقط از ابتدا آیتمها را برمیدارد. برای Random sampling باید از Code استفاده کنید.
- عدم فیلتر بر اساس شرط: برای شرطگذاری باید از IF، Filter (در صورت وجود در نسخه شما)، یا Code استفاده کنید.
- عدم جبران ترتیب: اگر ترتیب آیتمها درست نیست، Limit آن را اصلاح نمیکند. باید قبل از Limit ترتیب را تعیین کنید.
خطاهای رایج و راهحلها
- فکر میکنید Limit داده را از منبع کمتر میگیرد، اما فقط خروجی را کم میکند
- علت: Limit بعد از دریافت داده اعمال میشود.
- راهحل: برای کاهش واقعی حجم دریافت، Pagination/Query/Filter را در نود منبع تنظیم کنید (مثل LIMIT در SQL یا پارامترهای API).
- انتظار دارید «آخرین» آیتمها انتخاب شوند اما «اولین»ها میآیند
- علت: Limit از ابتدا انتخاب میکند.
- راهحل: قبل از Limit داده را Sort کنید (ORDER BY در دیتابیس یا Code برای مرتبسازی).
- Limit صفر یا مقدار نامعتبر میگذارید و خروجی خالی میشود
- علت: مقدار Limit درست تنظیم نشده یا Expression مقدار نامناسب برمیگرداند.
- راهحل: مقدار را عدد صحیح مثبت قرار دهید و خروجی Expression را بررسی کنید.
ایده ها
- ارسال روزانه فقط 10 تیکت اول از Zendesk به Slack برای بررسی سریع تیم پشتیبانی
- انتشار آزمایشی یک کمپین: ارسال پیام فقط به 20 مخاطب اول، سپس افزایش تدریجی
- تولید گزارش نمونه از 15 تراکنش آخر برای کنترل کیفیت دادههای مالی
- ساخت حالت Demo برای ورکفلو: محدود کردن خروجی برای نمایش در محیط آموزشی
- کاهش ریسک در مهاجرت داده: انتقال مرحلهای، هر بار فقط 50 رکورد
