نود Filter در N8N
نود Filter یکی از نودهای بسیار کاربردی در N8N است که برای عبور دادن فقط بخشی از دادهها بر اساس شرطهای مشخص استفاده میشود. وقتی در یک ورکفلو با لیستی از آیتمها، سفارشها، کاربران، پیامها یا رکوردهای API کار میکنید، معمولاً همه دادهها برای ادامه پردازش مناسب نیستند. نود Filter کمک میکند فقط آیتمهایی که شرایط موردنظر شما را دارند وارد مراحل بعدی ورکفلو شوند.
معرفی نود در N8N
نود Filter در N8N برای فیلتر کردن آیتمهای ورودی استفاده میشود. این نود روی هر آیتم ورودی بهصورت جداگانه شرطها را بررسی میکند و فقط آیتمهایی را در خروجی نگه میدارد که شرطها را پاس کنند.
- نام نود: Filter
- دستهبندی: Function / Flow Control
- نوع عملکرد: پردازش و کنترل جریان دادهها
- کاربرد اصلی: حذف آیتمهای نامرتبط و عبور دادن آیتمهای معتبر به نودهای بعدی
اهمیت نود Filter در این است که باعث میشود ورکفلوها تمیزتر، سریعتر و کمخطاتر اجرا شوند. بهجای اینکه همه دادهها وارد نودهای بعدی مثل ارسال ایمیل، ذخیره در دیتابیس، فراخوانی API یا پردازش هوش مصنوعی شوند، ابتدا میتوانید دادهها را فیلتر کنید و فقط موارد ضروری را ادامه دهید.
موارد استفاده
فیلتر کردن سفارشهای پرداختشده
فرض کنید از یک فروشگاه اینترنتی سفارشها را دریافت میکنید. همه سفارشها نباید وارد مرحله ارسال پیامک یا ثبت در سیستم حسابداری شوند. با نود Filter میتوانید فقط سفارشهایی را عبور دهید که وضعیت آنها برابر با paid باشد.
- ورودی: لیستی از سفارشها
- شرط: status برابر paid باشد
- خروجی: فقط سفارشهای پرداختشده
فیلتر کردن لیدهای باکیفیت در CRM
در یک سیستم مدیریت مشتری، ممکن است لیدهایی با امتیازهای مختلف داشته باشید. با Filter میتوانید فقط لیدهایی را عبور دهید که امتیاز آنها بیشتر از 70 باشد و سپس آنها را به تیم فروش ارسال کنید.
- نودهای قابل ترکیب: Webhook، Google Sheets، HubSpot، Slack، Gmail
- سناریو: دریافت لید از فرم سایت، فیلتر لیدهای با امتیاز بالا، ارسال پیام به تیم فروش در Slack
حذف پیامهای خالی یا نامعتبر
اگر از Telegram، WhatsApp، Email یا فرمهای آنلاین داده دریافت میکنید، ممکن است بعضی پیامها خالی، ناقص یا غیرقابل استفاده باشند. نود Filter میتواند بررسی کند که فیلدهای مهم مثل email، phone یا message خالی نباشند.
پردازش فقط آیتمهای جدید
در ورکفلوهایی که اطلاعات را از API یا دیتابیس دریافت میکنند، ممکن است بخواهید فقط آیتمهایی پردازش شوند که تاریخ ایجاد آنها بعد از یک زمان مشخص است. برای مثال، فقط رکوردهایی که در 24 ساعت گذشته ایجاد شدهاند.
ترکیب با نودهای دیگر
- Webhook + Filter + Slack: دریافت داده از وبسایت و ارسال فقط درخواستهای مهم به Slack
- HTTP Request + Filter + Google Sheets: دریافت داده از API و ذخیره فقط آیتمهای معتبر در Google Sheets
- Schedule Trigger + Database + Filter + Email: اجرای روزانه، خواندن رکوردها، فیلتر موارد مهم و ارسال ایمیل
- Telegram Trigger + Filter + OpenAI: ارسال فقط پیامهای خاص کاربران به مدل هوش مصنوعی
- Shopify + Filter + Notion: ثبت فقط سفارشهای بالای یک مبلغ مشخص در Notion
پارامترها و تنظیمات
تنظیمات نود Filter بر پایه تعریف شرطها انجام میشود. شما مشخص میکنید کدام فیلد از داده ورودی بررسی شود، چه عملیاتی روی آن انجام شود و با چه مقداری مقایسه گردد.
Conditions
بخش Conditions مهمترین قسمت نود Filter است. در این بخش شرطهایی را تعریف میکنید که هر آیتم ورودی باید آنها را پاس کند تا در خروجی باقی بماند.
| نام پارامتر | نوع داده | توضیح کاربرد | مثال عملی |
|---|---|---|---|
| Value 1 | Expression / String / Number / Boolean / Date | مقداری که از آیتم ورودی خوانده میشود و قرار است بررسی شود. | {{$json.status}} |
| Operation | Operator | نوع مقایسه یا شرط را مشخص میکند؛ مثل برابر بودن، بزرگتر بودن، شامل بودن یا خالی نبودن. | equals |
| Value 2 | String / Number / Boolean / Date / Expression | مقداری که Value 1 با آن مقایسه میشود. | paid |
نمونه شرط ساده برای عبور دادن سفارشهای پرداختشده:
{{$json.status}} equals paidانواع داده قابل استفاده در شرطها
در نود Filter میتوانید شرطها را برای انواع مختلف داده تنظیم کنید. انتخاب نوع داده درست باعث میشود شرطها دقیقتر و قابلاعتمادتر اجرا شوند.
- String: برای متنها، نامها، ایمیلها، وضعیتها و شناسههای متنی
- Number: برای قیمت، امتیاز، تعداد، مبلغ سفارش و مقادیر عددی
- Boolean: برای مقدارهای true و false مانند فعال بودن کاربر یا تایید شدن سفارش
- Date & Time: برای تاریخ ایجاد، تاریخ بهروزرسانی، زمان سررسید و زمان ارسال
- Array: برای لیستها، تگها، محصولات، آیتمهای سبد خرید و آرایهها
- Object: برای بررسی وجود یا ساختار آبجکتها در دادههای پیچیدهتر
عملگرهای متداول برای String
| عملگر | کاربرد | مثال |
|---|---|---|
| equals | بررسی برابر بودن متن | {{$json.status}} equals active |
| not equals | بررسی برابر نبودن متن | {{$json.role}} not equals admin |
| contains | بررسی اینکه متن شامل عبارت خاصی باشد | {{$json.email}} contains @company.com |
| does not contain | بررسی اینکه متن شامل عبارت خاصی نباشد | {{$json.message}} does not contain spam |
| starts with | بررسی شروع متن با عبارت مشخص | {{$json.phone}} starts with +98 |
| ends with | بررسی پایان متن با عبارت مشخص | {{$json.fileName}} ends with .pdf |
| is empty | بررسی خالی بودن مقدار | {{$json.description}} is empty |
| is not empty | بررسی خالی نبودن مقدار | {{$json.email}} is not empty |
عملگرهای متداول برای Number
| عملگر | کاربرد | مثال |
|---|---|---|
| equals | برابر بودن عدد | {{$json.quantity}} equals 1 |
| not equals | برابر نبودن عدد | {{$json.score}} not equals 0 |
| larger than | بزرگتر بودن از مقدار مشخص | {{$json.total}} larger than 1000000 |
| smaller than | کوچکتر بودن از مقدار مشخص | {{$json.stock}} smaller than 5 |
| larger or equal | بزرگتر یا مساوی بودن | {{$json.score}} larger or equal 70 |
| smaller or equal | کوچکتر یا مساوی بودن | {{$json.discount}} smaller or equal 30 |
عملگرهای متداول برای Boolean
| عملگر | کاربرد | مثال |
|---|---|---|
| is true | بررسی true بودن مقدار | {{$json.isActive}} is true |
| is false | بررسی false بودن مقدار | {{$json.isDeleted}} is false |
| equals | مقایسه مستقیم با true یا false | {{$json.emailVerified}} equals true |
عملگرهای متداول برای Date & Time
| عملگر | کاربرد | مثال |
|---|---|---|
| after | بررسی اینکه تاریخ بعد از زمان مشخص باشد | {{$json.createdAt}} after 2025-01-01 |
| before | بررسی اینکه تاریخ قبل از زمان مشخص باشد | {{$json.dueDate}} before 2025-12-31 |
| equals | بررسی برابر بودن تاریخ | {{$json.date}} equals 2025-03-10 |
| is not empty | بررسی وجود تاریخ | {{$json.updatedAt}} is not empty |
Combine Conditions
وقتی بیشتر از یک شرط تعریف میکنید، باید مشخص کنید آیتمها چگونه باید با این شرطها ارزیابی شوند. معمولاً دو حالت اصلی وجود دارد:
- AND: همه شرطها باید درست باشند تا آیتم عبور کند.
- OR: کافی است حداقل یکی از شرطها درست باشد تا آیتم عبور کند.
مثال برای حالت AND:
{{$json.status}} equals paidAND{{$json.total}} larger than 500000در این حالت فقط سفارشهایی عبور میکنند که هم پرداختشده باشند و هم مبلغ آنها بیشتر از 500000 باشد.
مثال برای حالت OR:
{{$json.priority}} equals highOR{{$json.customerType}} equals VIPدر این حالت اگر سفارش اولویت بالا داشته باشد یا مشتری VIP باشد، آیتم از فیلتر عبور میکند.
Options
بسته به نسخه N8N و نوع شرطها، ممکن است گزینههای تکمیلی برای کنترل دقیقتر فیلتر در دسترس باشد.
| نام گزینه | نوع داده | توضیح کاربرد | مثال عملی |
|---|---|---|---|
| Ignore Case | Boolean | در مقایسههای متنی، بزرگی و کوچکی حروف را نادیده میگیرد. | Paid و paid یکسان در نظر گرفته شوند. |
| Loose Type Validation | Boolean | در برخی شرایط اجازه میدهد مقادیر با نوع داده متفاوت بهصورت منعطفتری مقایسه شوند. | مقایسه عدد 100 با متن “100” |
| Convert Types where Required | Boolean | در صورت نیاز، N8N تلاش میکند نوع داده را برای مقایسه تبدیل کند. | تبدیل رشته عددی به عدد هنگام مقایسه |
نکات مهم هنگام پیکربندی
- برای دسترسی به دادههای هر آیتم معمولاً از Expression مثل {{$json.fieldName}} استفاده میشود.
- در مقایسههای عددی، مطمئن شوید مقدار واقعاً عدد است، نه رشته متنی.
- در مقایسه تاریخ، بهتر است از فرمتهای استاندارد مثل ISO 8601 استفاده شود.
- اگر فیلدی ممکن است وجود نداشته باشد، ابتدا با شرط is not empty آن را بررسی کنید.
- در شرطهای متنی حساس، گزینه Ignore Case میتواند از خطاهای ناشی از حروف بزرگ و کوچک جلوگیری کند.
- برای فیلترهای پیچیده، بهتر است قبل از Filter از نود Set یا Edit Fields برای تمیز کردن دادهها استفاده شود.
ورودیها و خروجیها
ورودی نود Filter
نود Filter میتواند یک یا چند آیتم ورودی دریافت کند. هر آیتم معمولاً یک آبجکت JSON است. Filter هر آیتم را جداگانه بررسی میکند و تصمیم میگیرد آن آیتم در خروجی باقی بماند یا حذف شود.
نمونه ورودی:
[ { "id": 101, "customer": "Ali", "status": "paid", "total": 850000, "email": "ali@example.com" }, { "id": 102, "customer": "Sara", "status": "pending", "total": 320000, "email": "sara@example.com" }, { "id": 103, "customer": "Reza", "status": "paid", "total": 1200000, "email": "reza@example.com" }]نمونه شرط
در این مثال شرط نود Filter به شکل زیر تنظیم شده است:
{{$json.status}} equals paidAND{{$json.total}} larger than 500000خروجی نود Filter
پس از اجرای شرط بالا، فقط آیتمهایی که وضعیت آنها paid است و مبلغ آنها بیشتر از 500000 است در خروجی باقی میمانند.
[ { "id": 101, "customer": "Ali", "status": "paid", "total": 850000, "email": "ali@example.com" }, { "id": 103, "customer": "Reza", "status": "paid", "total": 1200000, "email": "reza@example.com" }]تفاوت Filter با IF
نود Filter و نود IF هر دو برای شرطگذاری استفاده میشوند، اما کاربرد آنها متفاوت است.
| ویژگی | Filter | IF |
|---|---|---|
| هدف اصلی | حذف آیتمهای نامعتبر و نگه داشتن آیتمهای معتبر | شاخهبندی مسیر اجرای ورکفلو |
| خروجی | معمولاً فقط آیتمهای عبورکرده از شرط | دو مسیر True و False |
| کاربرد مناسب | پاکسازی و محدود کردن دادهها | اجرای مسیرهای متفاوت بر اساس شرط |
| مثال | فقط سفارشهای پرداختشده را نگه دار | اگر پرداختشده بود پیامک بفرست، در غیر این صورت ایمیل یادآوری بفرست |
نکات پیشرفته و ترفندها
استفاده از Expression برای شرطهای پویا
قدرت اصلی نود Filter زمانی مشخص میشود که از Expression استفاده کنید. بهجای مقدار ثابت، میتوانید شرطها را بر اساس زمان فعلی، داده نودهای قبلی یا محاسبات سفارشی تنظیم کنید.
مثال فیلتر کردن سفارشهای بالاتر از میانگین محاسبهشده در نود قبلی:
{{$json.total}} larger than {{$node["Calculate Average"].json["average"]}}فیلتر کردن دادهها بر اساس تاریخ امروز
برای سناریوهایی مثل یادآوری وظایف امروز یا بررسی سفارشهای روز جاری، میتوانید از Expressionهای تاریخ استفاده کنید.
{{$json.dueDate}} equals {{$now.toFormat('yyyy-MM-dd')}}ترکیب Filter با Set یا Edit Fields
اگر دادههای ورودی ساختار نامنظم دارند، بهتر است قبل از نود Filter از نود Set یا Edit Fields استفاده کنید تا فیلدهای موردنیاز را استاندارد کنید. برای مثال، اگر وضعیت سفارش گاهی Paid، گاهی paid و گاهی PAID است، میتوانید ابتدا مقدار را به حروف کوچک تبدیل کنید و سپس فیلتر را اجرا کنید.
{{ $json.status.toLowerCase() }}استفاده از Filter قبل از نودهای هزینهبر
اگر در ورکفلو از نودهایی مثل OpenAI، HTTP Request به APIهای پولی، ارسال پیامک یا ارسال ایمیل انبوه استفاده میکنید، بهتر است قبل از آنها نود Filter قرار دهید. این کار باعث کاهش هزینه، افزایش سرعت و جلوگیری از ارسال دادههای نامرتبط میشود.
فیلتر کردن آرایهها و تگها
اگر هر آیتم شامل آرایهای از تگها باشد، میتوانید بررسی کنید آیا تگ خاصی در آن وجود دارد یا نه. این روش برای دستهبندی محتوا، کاربران یا محصولات بسیار کاربردی است.
نمونه داده:
{ "title": "Order 1001", "tags": ["vip", "priority", "paid"]}نمونه شرط:
{{$json.tags}} contains vipفیلتر چندمرحلهای
در بعضی ورکفلوها بهتر است بهجای ساخت یک فیلتر بسیار پیچیده، از چند نود Filter پشت سر هم استفاده شود. این کار خوانایی ورکفلو را بیشتر میکند و عیبیابی را سادهتر میسازد.
- Filter اول: فقط رکوردهای فعال
- Filter دوم: فقط رکوردهای دارای ایمیل
- Filter سوم: فقط رکوردهای با امتیاز بالاتر از 80
استفاده از Filter برای جلوگیری از خطا در نودهای بعدی
بسیاری از خطاهای ورکفلو به این دلیل رخ میدهند که نود بعدی انتظار یک مقدار مشخص دارد اما آن مقدار در آیتم وجود ندارد. با Filter میتوانید قبل از رسیدن داده به نود بعدی، وجود فیلدهای ضروری را بررسی کنید.
{{$json.email}} is not emptyAND{{$json.name}} is not emptyمحدودیتها و خطاها
محدودیتهای نود Filter
- نود Filter برای تغییر ساختار داده طراحی نشده است؛ فقط آیتمها را بر اساس شرط حذف یا نگه میدارد.
- برای شاخهبندی دوطرفه True و False، نود IF معمولاً انتخاب مناسبتری است.
- اگر شرطها بسیار پیچیده و شامل محاسبات سنگین باشند، استفاده از Code node میتواند مناسبتر باشد.
- در صورت نامشخص بودن نوع دادهها، نتیجه مقایسه ممکن است با انتظار شما متفاوت باشد.
- اگر فیلد موردنظر در بعضی آیتمها وجود نداشته باشد، ممکن است شرط false شود یا خطای Expression ایجاد کند.
خطای رایج: خروجی خالی
علت: هیچکدام از آیتمهای ورودی با شرطها مطابقت ندارند.
راهحل: شرطها را سادهتر کنید، داده ورودی را در بخش Execution بررسی کنید و مطمئن شوید نام فیلدها درست نوشته شدهاند.
خطای رایج: اشتباه در نام فیلد
علت: استفاده از نام فیلد نادرست در Expression، مثلاً {{$json.stats}} بهجای {{$json.status}}.
راهحل: از پنل دادههای ورودی در N8N مسیر دقیق فیلد را انتخاب کنید و از نوشتن دستی مسیرهای پیچیده تا حد امکان خودداری کنید.
خطای رایج: مقایسه عدد با متن
علت: مقدار عددی بهصورت رشته ذخیره شده است؛ برای مثال “1000” بهجای 1000.
راهحل: از تبدیل نوع داده استفاده کنید یا قبل از Filter مقدار را با نود Set / Edit Fields اصلاح کنید.
{{ Number($json.total) }}خطای رایج: مشکل در مقایسه تاریخ
علت: تاریخها با فرمتهای مختلف وارد میشوند یا منطقه زمانی متفاوت است.
راهحل: تاریخها را قبل از مقایسه به فرمت استاندارد تبدیل کنید و در صورت نیاز Timezone را در تنظیمات ورکفلو بررسی کنید.
خطای رایج: حساسیت به حروف بزرگ و کوچک
علت: مقدار ورودی Paid است اما شرط روی paid تنظیم شده است.
راهحل: گزینه Ignore Case را فعال کنید یا مقدار را با Expression به حروف کوچک تبدیل کنید.
{{ $json.status.toLowerCase() }}ایده ها
- سیستم اولویتبندی مشتریان VIP: دریافت سفارشها از فروشگاه، فیلتر مشتریان VIP یا سفارشهای با مبلغ بالا و ارسال اعلان فوری به تیم پشتیبانی.
- پاکسازی خودکار فرمهای سایت: دریافت اطلاعات فرم تماس، حذف پیامهای خالی یا اسپم و ذخیره فقط پیامهای معتبر در CRM.
- مانیتورینگ خطاهای مهم: دریافت لاگها از API یا دیتابیس، فیلتر فقط خطاهای critical و ارسال آنها به Slack یا Telegram.
- اتوماسیون تولید محتوا: دریافت لیست موضوعات، فیلتر فقط موضوعات دارای وضعیت approved و ارسال آنها به OpenAI یا Google Docs.
- مدیریت موجودی فروشگاه: بررسی محصولات، فیلتر کالاهایی که موجودی آنها کمتر از حد مشخص است و ارسال هشدار به مدیر فروشگاه.
