پرش به محتویات

عبارات#

عبارات یک ویژگی قدرتمند هستند که در تمام نودهای n98n پیاده‌سازی شده‌اند. آن‌ها به پارامترهای نود اجازه می‌دهند تا به صورت پویا بر اساس داده‌های زیر تنظیم شوند:

  • اجراهای نود قبلی
  • ورکفلو
  • محیط n98n شما

همچنین می‌توانید JavaScript را در یک عبارت اجرا کنید، که این یک روش راحت و آسان برای دستکاری داده‌ها به مقادیر پارامتر مفید بدون نوشتن کد اضافی گسترده است.

n98n یک زبان قالب‌بندی به نام Tournament ایجاد کرده و از آن استفاده می‌کند و آن را با متدها و متغیرهای سفارشی و توابع تبدیل داده گسترش می‌دهد. این ویژگی‌ها انجام کارهای رایج مانند دریافت داده از نودهای دیگر یا دسترسی به متادیتای ورکفلو را آسان‌تر می‌کنند.

n98n همچنین از دو کتابخانه پشتیبانی می‌کند:

  • Luxon، برای کار با تاریخ و زمان.
  • JMESPath، برای پرس و جوی JSON.

داده در n98n

هنگام نوشتن عبارات، درک ساختار و رفتار داده در n98n مفید است. برای اطلاعات بیشتر در مورد کار با داده در ورکفلوها خود به داده مراجعه کنید.

نوشتن عبارات#

برای استفاده از یک عبارت برای تنظیم مقدار یک پارامتر:

  1. روی پارامتری که می‌خواهید از عبارت استفاده کنید، نشانگر را نگه دارید.
  2. عبارات را در کلید ثابت/عبارت انتخاب کنید.
  3. عبارت خود را در پارامتر بنویسید، یا باز کردن ویرایشگر عبارت آیکون باز کردن ویرایشگر عبارات را برای باز کردن ویرایشگر عبارات انتخاب کنید. اگر از ویرایشگر عبارات استفاده می‌کنید، می‌توانید داده‌های موجود را در انتخاب‌کننده متغیر مرور کنید. تمام عبارات دارای فرمت {{ عبارت شما اینجا }} هستند.

مثال: دریافت داده از بدنه وب‌هوک#

سناریوی زیر را در نظر بگیرید: شما یک تریگر وب‌هوک دارید که داده‌ها را از طریق بدنه وب‌هوک دریافت می‌کند. می‌خواهید برخی از آن داده‌ها را برای استفاده در ورکفلو استخراج کنید.

داده‌های وب‌هوک شما شبیه به این است:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[
  {
    "headers": {
      "host": "n8n.instance.address",
      ...
    },
    "params": {},
    "query": {},
    "body": {
      "name": "Jim",
      "age": 30,
      "city": "New York"
    }
  }
]

در نود بعدی در ورکفلو، می‌خواهید فقط مقدار city را دریافت کنید. می‌توانید از عبارت زیر استفاده کنید:

1
{{$json.body.city}}

این عبارت:

  1. با استفاده از متغیر سفارشی $json n98n به داده‌های ورودی با فرمت JSON دسترسی پیدا می‌کند.
  2. مقدار city را پیدا می‌کند (در این مثال، "New York"). توجه داشته باشید که این مثال از سینتکس JMESPath برای پرس و جوی داده‌های JSON استفاده می‌کند. همچنین می‌توانید این عبارت را به صورت {{$json['body']['city']}} بنویسید.

مثال: نوشتن JavaScript طولانی‌تر#

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

برای درک محدودیت‌های JavaScript در عبارات و شروع به فکر کردن در مورد راه‌حل‌ها، به دو قطعه کد زیر نگاه کنید. هر دو مثال کد از کتابخانه تاریخ و زمان Luxon برای یافتن زمان بین دو تاریخ به ماه استفاده می‌کنند و کد را در براکت‌های دستگیره، مانند یک عبارت، محصور می‌کنند.

با این حال، مثال اول یک عبارت معتبر n98n نیست:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// این مثال برای خوانایی در چند خط تقسیم شده است
// حتی وقتی به صورت یک خط فرمت‌بندی شود، نامعتبر است
{{
  function example() {
    let end = DateTime.fromISO('2017-03-13');
    let start = DateTime.fromISO('2017-02-13');
    let diffInMonths = end.diff(start, 'months');
    return diffInMonths.toObject();
  }
  example();
}}

در حالی که مثال دوم معتبر است:

1
{{DateTime.fromISO('2017-03-13').diff(DateTime.fromISO('2017-02-13'), 'months').toObject()}}

مشکلات رایج#

برای خطاها یا مشکلات رایج با عبارات و مراحل حل پیشنهادی، به مشکلات رایج مراجعه کنید.