فیلتر
Filter
فیلتر دادهها بر اساس شرایط: مقایسه مقادیر، Regex، ترکیب AND/OR
نمای کلی
نود Filter چیست؟
نود Filter یک نود Core در n8n است که دادههای ورودی را بر اساس شرایط تعریفشده فیلتر میکند. آیتمهایی که شرایط را برآورده کنند عبور میکنند و بقیه حذف میشوند.
تفاوت Filter با IF:
- Filter: فقط آیتمهای منطبق عبور میکنند (یک خروجی)
- IF: دو خروجی دارد (True و False) و هیچ آیتمی حذف نمیشود
عملگرهای مقایسه:
- String: equals, not equals, contains, not contains, starts with, ends with, regex, is empty, is not empty
- Number: equals, not equals, greater than, less than, greater or equal, less or equal, is between
- Boolean: is true, is false
- Date: before, after, is between
- Array: contains, not contains, length equals, is empty
ترکیب شرایط:
- AND: همه شرایط باید برقرار باشند
- OR: حداقل یک شرط برقرار باشد
- ترکیب تودرتو از AND/OR ممکن است
Expression Mode:
امکان نوشتن Expression پیچیده با JavaScript برای فیلترهای سفارشی.
احراز هویت
بدون نیاز به احراز هویت - نود Filter یک نود داخلی n8n است و نیازی به Credentials ندارد.
عملیاتهای موجود
مقایسه مساوی
بررسی تساوی مقدار فیلد با مقدار مشخص. Case-sensitive برای String. مناسب برای فیلتر وضعیتها.
مقایسه نامساوی
بررسی نامساوی مقدار. آیتمهایی که مقدار متفاوت دارند عبور میکنند.
شامل (Contains)
بررسی وجود زیررشته در مقدار فیلد. مناسب برای جستجوی کلمه کلیدی در متن.
شروع با (Starts With)
بررسی شروع مقدار با رشته مشخص. مناسب برای فیلتر پیشوندها و کدهای محصول.
پایان با (Ends With)
بررسی پایان مقدار با رشته مشخص. مناسب برای فیلتر پسوند فایل یا دامنه ایمیل.
بزرگتر از
مقایسه عددی: فقط مقادیر بزرگتر از حد تعیینشده عبور میکنند. مناسب برای فیلتر مبلغ و تعداد.
کوچکتر از
مقایسه عددی: فقط مقادیر کوچکتر عبور میکنند.
بین دو مقدار (Between)
بررسی قرار گرفتن مقدار بین دو حد. مناسب برای بازه قیمت، تاریخ و سن.
Regex Match
فیلتر با الگوی Regular Expression. قدرتمندترین روش فیلتر برای الگوهای پیچیده.
خالی بودن (Is Empty)
بررسی خالی بودن فیلد: null، undefined، رشته خالی یا آرایه خالی.
خالی نبودن (Is Not Empty)
فقط آیتمهایی که فیلد مقدار دارند عبور میکنند. مناسب برای اعتبارسنجی داده.
ترکیب AND
ترکیب چند شرط با AND: همه شرایط باید برقرار باشند تا آیتم عبور کند.
ترکیب OR
ترکیب شرایط با OR: حداقل یک شرط باید برقرار باشد.
کاربردهای متداول
موارد استفاده رایج نود Filter
۱. فیلتر ایمیلهای مهم
دریافت ایمیلها > فیلتر بر اساس فرستنده، موضوع یا کلمه کلیدی > پردازش فقط ایمیلهای مرتبط.
۲. اعتبارسنجی داده ورودی
بررسی وجود فیلدهای ضروری (Is Not Empty). فیلتر مقادیر نامعتبر قبل از ذخیره در دیتابیس.
۳. فیلتر سفارشات بر اساس مبلغ
فقط سفارشات بالای X تومان پردازش شوند. هشدار برای سفارشات VIP.
۴. فیلتر وضعیت
فقط آیتمهایی با وضعیت خاص (active, pending, error) را پردازش کنید. مناسب برای پردازش انتخابی.
۵. فیلتر بازه تاریخ
فقط رکوردهای X روز اخیر. فیلتر رویدادهای آینده از رویدادهای گذشته.
۶. حذف رکوردهای تکراری
ترکیب Filter با Code node: فیلتر بر اساس unique identifier.
۷. فیلتر بر اساس Regex
شناسایی کدهای محصول، شماره تلفن، ایمیل یا URL با الگوی خاص.
۸. فیلتر نتایج API
پس از دریافت داده از API، فقط نتایج مرتبط را نگه دارید. کاهش حجم پردازش.
۹. فیلتر کلمات کلیدی
مانیتورینگ شبکههای اجتماعی: فقط پستهای حاوی کلمات خاص (نام برند، محصول).
۱۰. فیلتر هشدار بر اساس آستانه
مانیتورینگ سرور: فقط زمانی هشدار بده که CPU > 90% یا RAM > 85%.
۱۱. فیلتر دادههای خالی
حذف رکوردهایی با فیلدهای خالی قبل از ارسال به API خارجی.
نکات حرفهای
نکات و ترفندهای نود Filter
کِی از Filter استفاده کنید
- وقتی فقط آیتمهای منطبق لازمند (حذف بقیه)
- وقتی یک خروجی کافی است
- برای اعتبارسنجی داده ورودی
- قبل از عملیاتهای هزینهبر (API calls, Email)
کِی از IF استفاده کنید
- وقتی هر دو مسیر (True/False) نیاز به پردازش دارند
- وقتی آیتمهای ردشده هم مهماند
- برای مسیریابی (Routing) دادهها
بهینهسازی شرایط
- شرطهای سادهتر اول باشند (سریعتر ارزیابی)
- AND: شرطهایی که بیشتر False هستند اول
- OR: شرطهایی که بیشتر True هستند اول
- از Regex فقط وقتی لازم است (کندتر از مقایسه ساده)
ترکیب با سایر نودها
- Set > Filter: ابتدا فیلد محاسباتی اضافه، سپس فیلتر
- Filter > Loop: فقط آیتمهای منطبق وارد Loop شوند
- Filter > Merge: فیلتر هر شاخه قبل از Merge
- Code > Filter: محاسبات پیچیده در Code، فیلتر ساده در Filter
Expressionهای مفید
- Case-insensitive:
{{$json.name.toLowerCase()}} === "test" - بررسی Array شامل:
{{$json.tags.includes("vip")}} - بررسی طول:
{{$json.name.length > 3}} - تاریخ:
{{new Date($json.date) > new Date("2024-01-01")}} - Nested:
{{$json.user?.email?.endsWith("@company.com")}}
فیلتر پیشرفته با Code
اگر شرایط خیلی پیچیده است، از Code node استفاده کنید و items را فیلتر کنید: items.filter(item => /* شرایط پیچیده */)
نکات عملکرد
- Filter در ابتدای Workflow: کاهش آیتمها = سرعت بیشتر
- فیلتر قبل از API call: صرفهجویی در Rate Limit
- فیلتر قبل از Database write: کاهش عملیات I/O
- هرچه زودتر فیلتر شود، بهتر است
رفع مشکلات
عیبیابی نود Filter
۱. هیچ آیتمی عبور نمیکند
مشکل: شرایط خیلی سختگیرانه راهحل: شرایط را یکبهیک تست کنید. از OR به جای AND استفاده کنید. مقادیر واقعی را با Debug بررسی کنید.
۲. مقایسه String کار نمیکند
**مشکل:** Case-sensitivity **راهحل:** مقایسه String پیشفرض Case-sensitive است. از Expression و .toLowerCase() استفاده کنید.
۳. مقایسه عددی نتیجه اشتباه
**مشکل:** مقدار String به جای Number **راهحل:** مقدار فیلد ممکن است String باشد ("100" به جای 100). از Expression parseInt() یا Number() استفاده کنید.
۴. Null و Undefined
**مشکل:** فیلد وجود ندارد **راهحل:** ابتدا Is Not Empty چک کنید. null !== "" و undefined !== null. از Optional Chaining (?.) استفاده کنید.
۵. Regex کار نمیکند
**مشکل:** سینتکس نادرست Regex **راهحل:** Escape کاراکترهای خاص: \., \(, \[. از regex101.com برای تست استفاده کنید.
۶. همه آیتمها عبور میکنند
**مشکل:** شرط خیلی ساده یا نام فیلد اشتباه **راهحل:** نام فیلد Case-sensitive است. Dot notation برای nested: user.email. مقدار مقایسه صحیح باشد.
۷. آرایه خالی برمیگردد
مشکل: Filter روی لیست آیتمها کار نمیکند راهحل: Filter روی هر آیتم جداگانه اعمال میشود. برای فیلتر داخل آرایه از Code node استفاده کنید.
۸. Expression Error
**مشکل:** خطای JavaScript در Expression **راهحل:** سینتکس Expression بررسی شود. از typeof برای چک نوع داده. Ternary: value ? true : false.
