⚙️
تنظیم مقادیر
Set
دستکاری، تبدیل و بازسازی دادههای ورودی
منطق و کنترل
مقدماتی
ویژه
۰بازدید
اشتراکگذاری:
مستندات رسمینمای کلی
نود Set به شما اجازه میدهد دادههای ورودی را تغییر دهید، فیلدهای جدید اضافه کنید، فیلدهای موجود را حذف کنید یا داده را کاملاً بازسازی کنید.
قابلیتهای کلیدی:
- افزودن فیلدهای جدید
- ویرایش فیلدهای موجود
- حذف فیلدهای نامطلوب
- تبدیل فرمت داده
- محاسبات ریاضی
- ترکیب چند فیلد
- انتخاب فیلدهای خاص (Keep Only Set Fields)
کاربردها:
- پاکسازی دادهها (Data Cleaning)
- تبدیل فرمت (مثلاً تاریخ، عدد، متن)
- فیلتر کردن فیلدهای غیرضروری
- محاسبات (مثلاً محاسبه مالیات، تخفیف)
- ترکیب دادهها (نام + نام خانوادگی)
- استخراج بخشی از داده
حالتهای عملکرد:
- Manual Mapping: تعیین دستی فیلدها
- Keep Only Set Fields: فقط فیلدهای تعریف شده نگه داشته شود
- Remove Listed Fields: حذف فیلدهای مشخص شده
کاربردهای متداول
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
نکات حرفهای
💡 نکات حرفهای:
- 1Keep Only Set Fields: برای فیلتر کردن داده و نگه داشتن فقط فیلدهای مورد نیاز.
- 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(', ')}}- 1JavaScript Mode: برای محاسبات پیچیده از JavaScript استفاده کنید:
javascript
// باید Object برگردانید
return {
field1: value1,
field2: value2
}- 1Conditional Values: مقدار شرطی:
javascript
status = {{$json.isPaid ? 'پرداخت شده' : 'پرداخت نشده'}}- 1Default Values: مقدار پیشفرض برای فیلدهای خالی:
javascript
phone = {{$json.phone ?? '0912000000'}}
name = {{$json.name || 'نامشخص'}}- 1چند فیلد در یک Expression:
javascript
address = {{$json.street}}, {{$json.city}}, {{$json.country}}- 1دسترسی به نود قبلی:
javascript
previousData = {{$('NodeName').item.json.field}}- 1Debug کردن: داده خام را ببینید:
javascript
raw = {{JSON.stringify($json)}}- 1حذف فیلدهای null/undefined: با JavaScript:
javascript
const cleanData = {}
for (const key in $json) {
if ($json[key] != null) cleanData[key] = $json[key]
}
return cleanData- 1Rename فیلد: ایجاد فیلد جدید و حذف قدیمی:
javascript
newName = {{$json.oldName}}
// سپس در تنظیمات، oldName را حذف کنید- 1ترکیب آرایهها:
javascript
allItems = {{[...$json.items1, ...$json.items2]}}- 1استخراج Domain از Email:
javascript
domain = {{$json.email.split('@')[1]}}- 1فرمت قیمت: اضافه کردن جداکننده هزارگان:
javascript
formattedPrice = {{$json.price.toLocaleString('fa-IR')}}- 1محاسبه سن از تاریخ تولد:
javascript
age = {{Math.floor(($now - new Date($json.birthdate)) / 31557600000)}}- 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" فعال بوده
راهحل
- این گزینه را غیرفعال کنید
- یا همه فیلدهای مورد نیاز را تعریف کنید