2015-12-06 10 views
15

मेरे एपीआई-एप्लिकेशन में मेरे पास अलग-अलग हिस्सों में त्रुटियों के लिए एक निश्चित प्रतिक्रिया है। जैसा कि आप res.status(400).json({"error": "Invalid input"}) देख सकते हैं, वास्तव में विभिन्न फ़ाइलों और मॉड्यूल में बहुत कुछ दोहरा रहा है।नोड में प्रतिक्रिया ऑब्जेक्ट में कस्टम फ़ंक्शन कैसे जोड़ें। जेएस

मैं मॉड्यूल-समारोह invalidInput(res), जो डुप्लिकेशन समाप्त होगा बना सकते हैं, लेकिन मैं वास्तव में इस res.invalidInput() तरह res वस्तु का वैश्विक हिस्सा बनने के लिए, चाहते हैं।

मैं इसे जेएस/नोड.जेएस में कैसे बना सकता हूं?

router.get("/users", function(req, res) { 
    // ... 
    if (error) { 
     return res.status(400).json({"error": "Invalid input"}); 
    } 
}); 

router.get("/items", function(req, res) { 
    // ... 
    if (error) { 
     return res.status(400).json({"error": "Invalid input"}); 
    } 
}); 

// etc 

उत्तर

14

आप अपने स्वयं के कस्टम मिडलवेयर का उपयोग कर सकते हैं। इस कहीं अपने मार्ग हैंडलर ऊपर जोड़ें:

router.use(function(req, res, next) { 
    res.invalidInput = function() { 
     return res.status(400).json({"error": "Invalid input"}); 
    }; 
    next(); 
}); 

और फिर आप अपने मार्ग संचालकों में res.invalidInput() कर सकते हैं।

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