مستندات n8n
74+ نود
⚙️

تنظیم مقادیر

Set

دستکاری، تبدیل و بازسازی داده‌های ورودی

منطق و کنترل
مقدماتی
۰ بازدید
n8n 1.0+

نمای کلی

نود Set به شما اجازه می‌دهد داده‌های ورودی را تغییر دهید، فیلدهای جدید اضافه کنید، فیلدهای موجود را حذف کنید یا داده را کاملاً بازسازی کنید.

قابلیت‌های کلیدی:

  • افزودن فیلدهای جدید
  • ویرایش فیلدهای موجود
  • حذف فیلدهای نامطلوب
  • تبدیل فرمت داده
  • محاسبات ریاضی
  • ترکیب چند فیلد
  • انتخاب فیلدهای خاص (Keep Only Set Fields)

کاربردها:

  • پاکسازی داده‌ها (Data Cleaning)
  • تبدیل فرمت (مثلاً تاریخ، عدد، متن)
  • فیلتر کردن فیلدهای غیرضروری
  • محاسبات (مثلاً محاسبه مالیات، تخفیف)
  • ترکیب داده‌ها (نام + نام خانوادگی)
  • استخراج بخشی از داده

حالت‌های عملکرد:

  • Manual Mapping: تعیین دستی فیلدها
  • Keep Only Set Fields: فقط فیلدهای تعریف شده نگه داشته شود
  • Remove Listed Fields: حذف فیلدهای مشخص شده

احراز هویت

احراز هویت

نود Set نیاز به احراز هویت ندارد.

این نود فقط داده‌های ورودی را دستکاری می‌کند و به هیچ سرویس خارجی متصل نمی‌شود.

نکات کاربردی:

  • می‌توانید از Expression برای دسترسی به فیلدهای ورودی استفاده کنید
  • پشتیبانی از JavaScript برای محاسبات پیچیده
  • دسترسی به تاریخ/زمان، توابع ریاضی، متنی و...

عملیات‌های موجود

1

set

افزودن، ویرایش یا حذف فیلدهای داده

کاربردهای متداول

1. فیلتر کردن فیلدهای غیرضروری

فقط نگه داشتن فیلدهای مورد نیاز:

قبل:

json
{
  "id": 123,
  "name": "علی",
  "email": "ali@example.com",
  "password": "***",
  "internal_id": "xyz",
  "created_at": "..."
}

بعد (Keep Only Set Fields: ON):

json
{
  "id": 123,
  "name": "علی",
  "email": "ali@example.com"
}

2. محاسبه مالیات و مبلغ نهایی

افزودن فیلدهای محاسبه شده:

ورودی:

json
{"price": 100000, "quantity": 3}

Set:

  • subtotal = {{$json.price * $json.quantity}} → 300000
  • tax = {{$json.subtotal * 0.09}} → 27000
  • total = {{$json.subtotal + $json.tax}} → 327000

خروجی:

json
{
  "price": 100000,
  "quantity": 3,
  "subtotal": 300000,
  "tax": 27000,
  "total": 327000
}

3. ترکیب نام و نام خانوادگی

ایجاد فیلد fullName:

Set:

  • fullName = {{$json.firstName}} {{$json.lastName}}

قبل:

json
{"firstName": "علی", "lastName": "محمدی"}

بعد:

json
{"firstName": "علی", "lastName": "محمدی", "fullName": "علی محمدی"}

4. تبدیل فرمت تاریخ

تبدیل به فرمت خواندنی:

Set:

  • date = {{$json.timestamp}}
  • persianDate = {{$now.toFormat('yyyy-MM-dd')}}
  • jalali = فراخوانی تابع تبدیل به شمسی

5. استخراج اطلاعات از URL

جدا کردن بخش‌های URL:

ورودی:

json
{"url": "https://example.com/products/123?ref=email"}

Set (با JavaScript):

javascript
const url = new URL($json.url)
return {
  domain: url.hostname,
  productId: url.pathname.split('/')[2],
  source: url.searchParams.get('ref')
}

خروجی:

json
{
  "domain": "example.com",
  "productId": "123",
  "source": "email"
}

6. تبدیل قیمت ریال به تومان

محاسبه ساده:

Set:

  • priceInToman = {{$json.priceInRial / 10}}

7. اضافه کردن Timestamp

ثبت زمان پردازش:

Set:

  • processedAt = {{$now.toISO()}}
  • processedBy = "n8n-workflow"

8. فرمت شماره موبایل

یکدست سازی فرمت:

Set (با JavaScript):

javascript
let phone = $json.phone.replace(/\D/g, '')  // حذف غیر عدد
if (phone.startsWith('98')) phone = '0' + phone.substring(2)
if (!phone.startsWith('0')) phone = '0' + phone
return { formattedPhone: phone }

9. محاسبه تخفیف

تخفیف بر اساس درصد:

Set:

  • discount = {{$json.price * 0.15}} // 15% تخفیف
  • finalPrice = {{$json.price - $json.discount}}

10. تبدیل به حروف بزرگ/کوچک

فرمت متن:

Set:

  • upperName = {{$json.name.toUpperCase()}}
  • lowerEmail = {{$json.email.toLowerCase()}}

11. پاکسازی HTML از متن

حذف تگ‌های HTML:

Set (با JavaScript):

javascript
return {
  cleanText: $json.description.replace(/<[^>]*>/g, '')
}

12. ایجاد شناسه یکتا

تولید ID:

Set:

  • orderId = ORD-{{$now.toFormat('yyyyMMdd')}}-{{Math.floor(Math.random()*10000)}}

خروجی: ORD-20240115-7834

نکات حرفه‌ای

💡 نکات حرفه‌ای:

  1. 1Keep Only Set Fields: برای فیلتر کردن داده و نگه داشتن فقط فیلدهای مورد نیاز.
  1. 1توابع پرکاربرد در Expression:
javascript
// متن
   {{$json.name.toLowerCase()}}
   {{$json.name.toUpperCase()}}
   {{$json.text.trim()}}
   {{$json.email.includes('@')}}

   // عدد
   {{Math.round($json.price)}}
   {{Math.ceil($json.price)}}
   {{Math.floor($json.price)}}
   {{Number($json.price).toFixed(2)}}

   // تاریخ
   {{$now.toISO()}}
   {{$now.toFormat('yyyy-MM-dd')}}
   {{$today.toMillis()}}

   // آرایه
   {{$json.items.length}}
   {{$json.items[0]}}
   {{$json.items.join(', ')}}
  1. 1JavaScript Mode: برای محاسبات پیچیده از JavaScript استفاده کنید:
javascript
// باید Object برگردانید
   return {
     field1: value1,
     field2: value2
   }
  1. 1Conditional Values: مقدار شرطی:
javascript
status = {{$json.isPaid ? 'پرداخت شده' : 'پرداخت نشده'}}
  1. 1Default Values: مقدار پیش‌فرض برای فیلدهای خالی:
javascript
phone = {{$json.phone ?? '0912000000'}}
   name = {{$json.name || 'نامشخص'}}
  1. 1چند فیلد در یک Expression:
javascript
address = {{$json.street}}, {{$json.city}}, {{$json.country}}
  1. 1دسترسی به نود قبلی:
javascript
previousData = {{$('NodeName').item.json.field}}
  1. 1Debug کردن: داده خام را ببینید:
javascript
raw = {{JSON.stringify($json)}}
  1. 1حذف فیلدهای null/undefined: با JavaScript:
javascript
const cleanData = {}
   for (const key in $json) {
     if ($json[key] != null) cleanData[key] = $json[key]
   }
   return cleanData
  1. 1Rename فیلد: ایجاد فیلد جدید و حذف قدیمی:
javascript
newName = {{$json.oldName}}
    // سپس در تنظیمات، oldName را حذف کنید
  1. 1ترکیب آرایه‌ها:
javascript
allItems = {{[...$json.items1, ...$json.items2]}}
  1. 1استخراج Domain از Email:
javascript
domain = {{$json.email.split('@')[1]}}
  1. 1فرمت قیمت: اضافه کردن جداکننده هزارگان:
javascript
formattedPrice = {{$json.price.toLocaleString('fa-IR')}}
  1. 1محاسبه سن از تاریخ تولد:
javascript
age = {{Math.floor(($now - new Date($json.birthdate)) / 31557600000)}}
  1. 1URL Encode:
javascript
encoded = {{encodeURIComponent($json.text)}}

رفع مشکلات

خطاهای رایج

1. فیلد در خروجی نمایش داده نمی‌شود

علت: گزینه "Keep Only Set Fields" فعال است

راه‌حل

  • اگر می‌خواهید فیلدهای قبلی هم باقی بمانند، این گزینه را OFF کنید
  • یا فیلدهای قبلی را هم در Set تعریف کنید

2. Expression خطا می‌دهد

علت: فیلد وجود ندارد یا فرمت اشتباه است

راه‌حل

  • فرمت صحیح: {{$json.fieldName}}
  • بررسی کنید فیلد در ورودی وجود دارد
  • از Null Coalescing: {{$json.field ?? 'default'}}

3. محاسبات اشتباه است

علت: نوع داده String است نه Number

راه‌حل

  • تبدیل به عدد: {{Number($json.price)}}
  • یا: {{parseInt($json.price)}}
  • یا: {{parseFloat($json.price)}}

4. خطای "Cannot read property"

علت: فیلد null یا undefined است

راه‌حل

  • استفاده از Optional Chaining: {{$json.user?.name}}
  • یا: {{$json.user ? $json.user.name : 'نامشخص'}}

5. JavaScript Mode کار نمی‌کند

علت: Syntax اشتباه است

راه‌حل

  • باید یک Object برگردانید:
javascript
return {
    fieldName: value
  }
  • نه فقط مقدار

6. تاریخ فرمت اشتباه دارد

علت: Timezone یا فرمت نادرست

راه‌حل

  • استفاده از $now.toISO() برای فرمت استاندارد
  • یا $now.toFormat('yyyy-MM-dd') برای فرمت دلخواه

7. فیلدهای قبلی پاک شدند

علت: "Keep Only Set Fields" فعال بوده

راه‌حل

  • این گزینه را غیرفعال کنید
  • یا همه فیلدهای مورد نیاز را تعریف کنید
اشتراک‌گذاری:

آیا این مستندات مفید بود؟