समझने से पहले next
, आपको नोड में रिक्वेस्ट-रिस्पॉन्स चक्र का थोड़ा विचार करना होगा, हालांकि विस्तार में ज्यादा नहीं। यह आपके लिए एक विशेष संसाधन के लिए HTTP अनुरोध करने के साथ शुरू होता है और यह तब समाप्त होता है जब आप उपयोगकर्ता को एक प्रतिक्रिया भेजते हैं अर्थात जब आप res.send ('हैलो वर्ल्ड') जैसी किसी चीज़ का सामना करते हैं;
आइए एक बहुत ही सरल उदाहरण देखें।
app.get('/hello', function (req, res, next) {
res.send('USER')
})
यहां हमें अगले () की आवश्यकता नहीं है, क्योंकि resp.send चक्र को समाप्त करेगा और नियंत्रण को वापस मार्ग के मध्य में सौंप देगा।
अब एक और उदाहरण लेते हैं।
app.get('/hello', function (req, res, next) {
res.send("Hello World !!!!");
});
app.get('/hello', function (req, res, next) {
res.send("Hello Planet !!!!");
});
यहां हमारे पास एक ही पथ के लिए 2 मिडलवेयर फ़ंक्शन हैं। लेकिन आप हमेशा पहले वाले से प्रतिक्रिया प्राप्त करने वाले हैं। क्योंकि यह मिडिलवेयर स्टैक में सबसे पहले लगाया जाता है और रिससेंड चक्र को समाप्त कर देगा।
लेकिन क्या होगा अगर हम हमेशा "हैलो वर्ल्ड !!!!" नहीं चाहते हैं प्रतिक्रिया वापस। कुछ स्थितियों के लिए हम "हेलो प्लेनेट !!!!" चाहते हैं। प्रतिक्रिया। आइए उपरोक्त कोड को संशोधित करें और देखें कि क्या होता है।
app.get('/hello', function (req, res, next) {
if(some condition){
next();
return;
}
res.send("Hello World !!!!");
});
app.get('/hello', function (req, res, next) {
res.send("Hello Planet !!!!");
});
यहाँ क्या next
कर रहा है? और हाँ आप gusses हो सकता है। यदि स्थिति सही है तो यह पहले मिडलवेयर फ़ंक्शन को स्किप करने वाला है और अगले मिडलवेयर फ़ंक्शन को इनवॉइस करें और आपके पास "Hello Planet !!!!"
प्रतिक्रिया होगी ।
तो, अगले मिडलवेयर स्टैक में अगले फ़ंक्शन पर नियंत्रण पास करें।
क्या होगा अगर पहला मिडलवेयर फ़ंक्शन किसी भी प्रतिक्रिया को वापस नहीं भेजता है, लेकिन तर्क के एक टुकड़े को निष्पादित करता है और फिर आपको दूसरे सॉफ़्टवेयर फ़ंक्शन से प्रतिक्रिया वापस मिलती है।
कुछ इस प्रकार है: -
app.get('/hello', function (req, res, next) {
// Your piece of logic
next();
});
app.get('/hello', function (req, res, next) {
res.send("Hello !!!!");
});
इस मामले में आपको आमंत्रित करने के लिए दोनों मिडलवेयर फ़ंक्शंस की आवश्यकता है। तो, दूसरे मिडलवेयर फ़ंक्शन तक पहुंचने का एकमात्र तरीका अगले कॉल करके है ();
क्या होगा अगर आप अगले को कॉल नहीं करते हैं। दूसरे मिडलवेयर फ़ंक्शन को स्वचालित रूप से प्राप्त करने की अपेक्षा न करें। पहले फ़ंक्शन को लागू करने के बाद आपका अनुरोध लटका रह जाएगा। दूसरा फ़ंक्शन कभी भी लागू नहीं होगा और आपको प्रतिक्रिया वापस नहीं मिलेगी।
res.send
अनुरोध को पूरा करने के लिए उपयोग करेगा । यदि यह मौजूद नहीं है, तो एक और हैंडलर होने की संभावना है जो एक त्रुटि जारी करेगा और फिर अनुरोध पूरा करेगा।