Tamim Fahed نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 لدي بعض العمليات التي يتم تطبيقها في كل وسيط middleware بشكل منفصل على الآخر، ولدي مسار يحوي أكثر من وسيط بحيث سيتم الدخول على كل منها بشكل متسلسل لإجراء بعض العمليات وتمرير النتيجة إلى الوسيط التالي وهكذا، مثال: router.get('/clients', [middleware1, middleware2], controller.doWork) وأقوم بوضع التابع next في هذه الوسطاء للمتابعة أو للإيقاف، ولكن كيف يمكنني تمرير القيم أو المتغيرات بين هذه الوسطاء من خلال express ؟ 1 اقتباس
1 محمد أبو عواد نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 يمكنك استخدام التابعين req, res لهذا الشيء, يتم استخدامهم كالتالي const express = require("express"); const app = express(); function middleware1(req, res, next) { req.data1 = "Data1"; next(); } function middleware2(req, res, next) { console.log("Data2."); console.log(req.data1);//هنا تم الحصول على البيانات من الوسيط الأول وطباعتها next(); } app.get("/clients", [middleware1, middleware2], (req, res) => { return res.send(req.data1); }); اقتباس
1 محمد أيت لعرايك نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 يمكنك تمرير المتغيرات بين الوسطاء باستخدام كائن res.locals ، حيث تكون المتغيرات صالحة فقط طوال عمر الطلب. const express = require('express'); const app = express(); app.get('/clients', middleware1, middleware2, (req, res) => { res.send('clients page'); }) function logger1(req, res, next) { //تمرير المتغيرات res.locals.client = "gowtham"; res.locals.id = "3434"; next(); } function logger2(req, res, next) { // الوصول إلى المتغيرات const client = res.locals.user; const id = res.locals.id; console.log(client, id); next(); } app.listen(4300, () => console.log(`App is running`)); ملاحظة: لا يمكنك تمرير المتغيرات من خلال الدالة ()next لأنها تستخدم لتشغيل وظيفة البرامج الوسيطة التالية في التطبيق. اقتباس
السؤال
Tamim Fahed
لدي بعض العمليات التي يتم تطبيقها في كل وسيط middleware بشكل منفصل على الآخر، ولدي مسار يحوي أكثر من وسيط بحيث سيتم الدخول على كل منها بشكل متسلسل لإجراء بعض العمليات وتمرير النتيجة إلى الوسيط التالي وهكذا، مثال:
router.get('/clients', [middleware1, middleware2], controller.doWork)
وأقوم بوضع التابع next في هذه الوسطاء للمتابعة أو للإيقاف، ولكن كيف يمكنني تمرير القيم أو المتغيرات بين هذه الوسطاء من خلال express ؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.