مشاريع Node-RED متوسطة التدفق

مبتدئ

image_pdf

عد الكلمات في السلسلة :

بعد ذلك، دعونا نكتب عقدة Function أكثر تعقيدا والتي تتلقى بعض النصوص في حمولة الرسالة (message payload) ، ثم إخراج رسائل متعددة تحتوي على كل الكلمات الفردية وعدد مرات استخدام كل كلمة .

الكود الموضح أدناه لعدد الكلمات :

var outputMsgs = [];
var wordMap = {};

var sentence = msg.payload.replace(/[.,-\/#!$%\^&\*;:{}=\-_`~()]/g,"");
sentence = sentence.replace(/\s{2,}/g," ");

var words = sentence.split(" ");
for (var i = 0; i < words.length; i++) {
  var lowerCaseWord = words[i].toLowerCase();
  if (!wordMap[lowerCaseWord]) {
    wordMap[lowerCaseWord] = 1;
  } else {
    wordMap[lowerCaseWord] = wordMap[lowerCaseWord] + 1;
  }
}
for (var prop in wordMap) {
  if( wordMap.hasOwnProperty( prop ) ) {
    outputMsgs.push({payload:{word:prop,count:wordMap[prop]}});
  }
}
return [outputMsgs];

في الكود أعلاه، يتم تعريف قائمة رسائل الاخراج و كائن للاحتفاظ بعدد الكلمات (كما هو موضح بالسطر 1 و 2) . في السطر 4 و 5 يتم إزالة علامات الترقيم و المسافات الإضافية من الحمولة (payload) بإستخدام التعابير القياسية (regular expressions) . التعابير القياسية أو المنتظمة (regular expressions) هي أداه مفيدة جدا لمعالجة النصوص ، يمكنك معرفة المزيد عن هذه التعبيرات من خلال الإطلاع على صفحة مطوري برامج Mozilla للجافا سكريبت هنـا . في السطر 7، يتم تقسيم النص إلى كلمات متعددة، ثم يكرر هذا من خلال الكلمات، حيث يتم إنشاء مصفوفة من الكلمات ذو الأحرف الصغيرة إلى عدد الكلمات الذي يدعى wordMap كما هو موضح بالسطور من 8 -15 . في السطور من 16 إلى 18 يتم تقسيم wordMap إلى رسائل متعددة في مصفوفة outputMsgs . وأخيرا، في السطر 21 ، يتم إرجاع المصفوفة التي تحتوي مجموعة الرسائل، و إرسالها جميعا إلى منفذ الإخراج الأول في وقت واحد.

دعونا ننشئ التدفق لنرى كيف يمكن أن تعمل مع بعض النص . أولا، قم بإنشاء عقدة function ، و نسخ التعليمات البرمجية أعلاه. ثم قم بإضافة عقدة inject :

intermediate-flows

قم بتهيئة عقدة inject و إضافة النص التالي كما هو موضح بالصورة :

intermediate-flows

قم بإضافة عقدة debug وربطها مع التدفق كما هو موضح بالشكل التالي :

intermediate-flows

عند النقر فوق عقدة inject ، يجب أن تشاهد قائمة و عدد الكلمات على لوحة الإخراج عند تبويب debug ، انظر الشكل أدناه:

intermediate-flows

X
تم إضافة المنتج إلى السلة بنجاح