मैं सोच रहा हूं कि जब आप app.get में एक से अधिक तर्क निर्दिष्ट करते हैं तो एक्सप्रेस.जेएस कैसे काम करता है, उदाहरण के लिए:

app.get('/', requireAuth, (req, res) => { })

यहां, मेरा मानना ​​है कि आपके पास स्लैश "/" मार्ग के रूप में है, और (req, res) कॉलबैक फ़ंक्शन के लिए तर्क के रूप में है। लेकिन 'आवश्यकता' भाग भी है जिसका उपयोग प्राधिकरण के लिए किया गया था। लेकिन दस्तावेज़ीकरण में मुझे कई तर्कों के बारे में कुछ भी नहीं मिलता है जिस तरह से हम 'requireAuth' का उपयोग करते हैं। यह उल्लेख करता है कि आप कार्यों की एक सरणी का उपयोग कर सकते हैं लेकिन इसका उपयोग यहां नहीं किया गया है (https:// Expressjs.com/hi/guide/routing.html)। यह कैसे काम करता है?

पी.एस. संदर्भ के लिए 'requireAuth' कोड:

module.exports = (req, res, next) => {
  const { authorization } = req.headers;
  // authorization === 'Bearer laksjdflaksdjasdfklj'

  if (!authorization) {
    return res.status(401).send({ error: 'You must be logged in.' });
  }

  const token = authorization.replace('Bearer ', '');
  jwt.verify(token, 'MY_SECRET_KEY', async (err, payload) => {
    if (err) {
      return res.status(401).send({ error: 'You must be logged in.' });
    }

    const { userId } = payload;

    const user = await User.findById(userId);
    req.user = user;
    next();
  });
};
0
beyondtdr 24 नवम्बर 2020, 13:09

1 उत्तर

सबसे बढ़िया उत्तर

सभी तर्क केवल मध्य-वेयर फ़ंक्शंस हैं जिन्हें आप वास्तविक मार्ग तर्क चलाने से पहले (व्यक्तिगत मार्गों के लिए) कहते हैं। जब तक प्रत्येक मिडल-वेयर फ़ंक्शन में अगली हैंडलिंग है, तब तक श्रृंखला आपके रूट लॉजिक तक चलेगी, और फिर उस स्थान से बाहर निकल जाएगी जहां अगला हैंडल नहीं किया गया है।

यह एक्सप्रेस का जादू है। आप इसके साथ कई काम कर सकते हैं, जैसे त्रुटि प्रबंधन, विभिन्न सामग्री प्रकारों को संभालना आदि।

1
BEvo 24 नवम्बर 2020, 13:09