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

عقدة function

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


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

نافذة "Node Information" لعقدة function باسم "auth data": في حقل "Function" كود يضبط grant_type على client_credentials ويحدد الترويستين Content-Type وAccept

1. Name​

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

مثال:

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

2. Function​

أدخل في هذا الحقل كود JavaScript الذي يُنفَّذ لكل رسالة تمر عبر العقدة.

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

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

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

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

مثال:

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

3. Output Example (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 فقط، ويوقف الباقي.