2013-05-14 11 views
10

में अगले मिडलवेयर को सही ढंग से कॉल करना मैं नोडज के साथ पुनर्स्थापित कर रहा हूं और मेरे पास स्टैक में अगले मिडलवेयर पर नियंत्रण लौटने के सही तरीके पर एक प्रश्न है। मुझे आशा है कि जब मैं "स्टैक में अगला मिडलवेयर" कहूं तो मैं सही वाक्यांश का उपयोग कर रहा हूं।मिडलवेयर को पुनर्स्थापित करें -

मूल रूप से, मेरे कोड इस तरह दिखता है:

//server is the server created using Restify 
server.use(function (req, res, next) { 
    //if some checks are a success 
    return next(); 
}); 

अब, क्या मुझे पता करना चाहते हैं कोड return next(); होना चाहिए या यह सिर्फ next(); ढेर में अगले करने के लिए नियंत्रण बढ़ाने के लिए किया जाना चाहिए?

मैंने चेक किया और दोनों काम - यह कोड के दोनों टुकड़े सफलतापूर्वक नियंत्रण पास हो जाएंगे और डेटा को अपेक्षित रूप से वापस कर देगा - मैं क्या जानना चाहता हूं कि दोनों के बीच कोई अंतर है और यदि मुझे किसी एक का उपयोग करने की आवश्यकता है ।

उत्तर

17

कोई फर्क नहीं पड़ता। मैंने Restify स्रोत पर एक नज़र डाली, और ऐसा लगता है कि यह मिडलवेयर के रिटर्न वैल्यू के साथ कुछ भी नहीं करता है।

if (someCondition) 
    next(); 
res.send(...); // !!! oops! we already called the next middleware *and* we're 
       //  sending a response ourselves! 
+1

हाय, तुम मुझे 'क्या में अगले कॉलबैक कर जवाब कर सकते हैं:

// using this... if (someCondition) { return next(); } res.send(...); // instead of... if (someCondition) { next(); } else { res.send(...); }; 

यह इस तरह त्रुटियों को रोकने में मदद कर सकता है:

return next() उपयोग करने का कारण विशुद्ध रूप से सुविधा की बात है http हैंडलर? server.get ('/', फ़ंक्शन (req, res, next) {res.end();}) 'क्या मुझे आगे भी कॉल करना चाहिए? –

+1

@vp_arth अगर आप एक तरफ प्रतिक्रिया भेजकर अनुरोध को समाप्त नहीं करते हैं, तो आप अगले मार्ग/मिडलवेयर/(त्रुटि-) हैंडलर पर नियंत्रण पास करने के लिए 'अगला() 'का उपयोग कर सकते हैं – robertklep

संबंधित मुद्दे