انتقل إلى المحتوى الرئيسي

عقدة function

عقدة function تُستخدم لكتابة كود JavaScript مخصص، مما يسمح بتنفيذ حسابات معقدة، وتحويلات بيانات، ومنطق معالجة الرسائل. إنها توفر مرونة لتنفيذ المنطق الذي لا تدعمه العقد القياسية.


إعدادات عقدة function

IMG2

1. الاسم

حقل لتحديد اسم العقدة.
يظهر الاسم في مساحة العمل ويساعد في التعرف بسهولة على العقدة.
إذا ترك فارغًا، ستُسمى العقدة function.

مثال:

  • اسم العقدة: auth data

2. الدالة

يتم إدخال كود JavaScript في هذا الحقل، والذي سيتم تنفيذه لكل رسالة تمر عبر العقدة.

تنسيق البيانات المدخلة:

يتلقى الكود كائن msg، الذي يمثل الرسالة الحالية.

تنسيق البيانات المرجعة:

  • يجب أن تُرجع العقدة كائن الرسالة (أو مصفوفة من الكائنات) لنقل البيانات إلى الأمام في السلسلة.
  • إذا تم إرجاع null، فلن يتم إرسال الرسالة إلى الأمام.

مثال:

// زيادة قيمة msg.payload بمقدار 1
msg.payload = msg.payload + 1;
return msg;

3. مثال على المخرجات (JSON)

مثال على البيانات التي ترجعها الدالة، بتنسيق JSON.
يتم بناء مخطط البيانات التالي بناءً على هذا المثال — تظهر حقوله في قسم Input Schema للعقدة التالية. يقوم المحرر بمقارنة المثال مع كود الدالة.

تصف حقول المثال جذر كائن msg، وليس msg.payload: ترجع الدالة الرسالة بالكامل.

يعمل المثال أيضًا كبيانات اختبار: إذا لم تنقل الدالة البيانات إلى الأمام عند الضغط على زر Execute في إحدى العقد التالية (admin-api, http request)، يتم استخدام قيمة هذا الحقل.

مثال:

{
"payload": {
"orderId": 123,
"status": "paid"
}
}

أمثلة على الاستخدام

مثال 1: ضرب القيمة في msg.payload

msg.payload = msg.payload * 2;
return msg;

الوصف:

  • يأخذ قيمة msg.payload، ويضربها في 2، ويرسل الكائن المحدث.

مثال 2: إضافة خاصية جديدة

msg.newProperty = "Hello, World!";
return msg;

الوصف:

  • ينشئ خاصية جديدة newProperty ويضيفها إلى كائن msg.

مثال 3: معالجة الرسائل بشكل شرطي

if (msg.payload > 100) {
msg.alert = "High value detected!";
} else {
msg.alert = "Value is normal.";
}
return msg;

الوصف:

  • يضيف خاصية alert مع تحذير نصي بناءً على قيمة msg.payload.

مثال 4: تصفية الرسائل

if (msg.payload > 50) {
return msg; // تمرير الرسالة إلى الأمام
}
return null; // إيقاف الرسالة

الوصف:

  • يسمح بمرور الرسائل فقط مع msg.payload > 50، بينما يتم إيقاف البقية.