نود Filter در N8N

نود 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 1Expression / String / Number / Boolean / Dateمقداری که از آیتم ورودی خوانده می‌شود و قرار است بررسی شود.{{$json.status}}
OperationOperatorنوع مقایسه یا شرط را مشخص می‌کند؛ مثل برابر بودن، بزرگ‌تر بودن، شامل بودن یا خالی نبودن.equals
Value 2String / 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 CaseBooleanدر مقایسه‌های متنی، بزرگی و کوچکی حروف را نادیده می‌گیرد.Paid و paid یکسان در نظر گرفته شوند.
Loose Type ValidationBooleanدر برخی شرایط اجازه می‌دهد مقادیر با نوع داده متفاوت به‌صورت منعطف‌تری مقایسه شوند.مقایسه عدد 100 با متن “100”
Convert Types where RequiredBooleanدر صورت نیاز، 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 هر دو برای شرط‌گذاری استفاده می‌شوند، اما کاربرد آن‌ها متفاوت است.

ویژگیFilterIF
هدف اصلیحذف آیتم‌های نامعتبر و نگه داشتن آیتم‌های معتبرشاخه‌بندی مسیر اجرای ورکفلو
خروجیمعمولاً فقط آیتم‌های عبورکرده از شرطدو مسیر 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.
  • مدیریت موجودی فروشگاه: بررسی محصولات، فیلتر کالاهایی که موجودی آن‌ها کمتر از حد مشخص است و ارسال هشدار به مدیر فروشگاه.

منابع و مستندات اصلی

دسته بندی: N8N برچسب ها:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

یک × یک =