اذهب إلى المحتوى

السؤال

نشر

السلام عليكم و رحمة الله و بركاته , رمضان مبارك على الجميع,

لدي متغير من نوع function scoped باسم firstName كما موضح في الصورة التالية و اريد الوصول إليه من داخل داله أخرى , هل توجد طريقة لفعلها ؟

let.thumb.png.99462f6b2371b43b2d0b661991eccfff.png

و شكرًا لكم

Recommended Posts

  • 0
نشر

لا يمكن الوصول إلى متغير داخل دالة من دالة أخرى ولكن يمكنك إرجاعه return 

أو عمل متغير global ووضع قيمة له من داخل الدالة بحيث تساوي قيمة المتغير الداخلي

 

هنا ايضا يمكنك عمل دالة مستقلة تاخذ ال req.body وتحسب منه ال firstname وترجعه

بحيث داخل ال route تنادي الدالة وتمرر لها الbody فقط

  • 0
نشر

 إضافة دالة داخل الـ route وتمرير قيمة req.body إلى هذه الدالة وإرجاع قيمة firstName من داخلها:

// دالة ترجع قيمة الاسم الذي تريده
function calculateFirstName(obj) {
  return obj.firstName;
}

router.post('/', (req, res) => {
  const obj = req.body; 
  const firstName = obj.firstName, lastName = obj.lastName, age = obj.age, Class = obj.class, lessons;
  const StudentId = Date.now();
  
  // يتم نداء الدالة هنا وإعطائها المعامل بالبيانات اللازمة
  const calculatedFirstName = calculateFirstName(req.body);
  
  db.run(`INSERT INTO Students (StudentId, FirstName, LastName, Age, Class, RegDate, LessonId) 
    VALUES (${StudentId}, "${firstName}", "${lastName}", ${age}, "${Class}", "${RegDate}", ${less}`, (err) => {
      if (err) return console.error(err);
      console.log(`Student ${firstName} ${lastName} has been added successfully`);
      res.redirect('/add-details');
  });
});

بعد ذلك يمكنك استخدام الدالة في المكان الذي تريده 

 

  • 0
نشر

قم بتعريف المتغير خارج الدالة ولكن لا تعطيه أي قيمة ثم في داخل الدالة تقوم بإعطائه المعلومات التي تريدها، مثل :

let firstName; // عرفنا المتغير خار ج الدوال جميعاً
const fun1 = (data)=>{
  firstName=data; // نسند القيمة للمتغير من الدالة الأولى
}
const fun2 = (data)=>{
  console.log(firstName); // data سيعيد الـ 
}

ولكن هذه الطريقة لن تعمل بالنسبة لك لأن الدالة الثانية لديك قد تحدث قبل ان تحدث الدالة الاولى وبالتالي سيكون المتغير firstName فارغاً أو يحتوي على معلومات المستخدم السابق.

والشكل الاصح للعملية هو إضافة middleware تقوم بإحضار هذه البيانات من قاعدة البيانات في كل من الطلبين، والشكل الاعتيادي ان تستخدم هذه الـ middleware البيانات المخزنة في الـ token بعد التحقق منه لتقوم بإحضار بيانات المستخدم ثم تمرر هذه البيانات لكل الطلبات.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...