2015-03-09 13 views
11

हम ExpressJS 3 से ExpressJS 4 की ओर पलायन कर रहे हैं, और हम ने कहा कि निम्न API पदावनत किया जा रहा है:रिप्लेसमेंट) कि एक्सप्रेस में हटा दिया गया है 4

req.param(fieldName) 
req.param(fieldName, defaultValue) 

वहाँ एक मिडलवेयर कि लाता है इन एपीआई वापस, अन्य एपीआई की तरह जो एक्सप्रेस से स्वतंत्र मॉड्यूल 'बाहरी' थे?

उत्तर

7

ठीक है, @Ineentho द्वारा दिए गए धागे को पढ़ने के बाद, हमने साथ आने का फैसला किया निम्नलिखित उत्तर:

https://github.com/osher/request-param

एक कनेक्ट/एक्सप्रेस मिडलवेयर वापस req.param (नाम, डिफ़ॉल्ट) एक्सप्रेस 4

में बहिष्कृत API सक्षम करने के लिए मध्यस्थ के न केवल goo'old कार्यक्षमता वापस लाता है। यह भी आप जहाँ से पैरामीटर, दोनों प्राप्त किए गए हैं डिफ़ॉल्ट नियम के रूप में, और :-)

मज़ा प्रति-कॉल जैसी संग्रह में से आदेश अनुकूलित करने देता है!

+1

वेब पर मिडलवेयर के रूप में आपके समाधान का योगदान करने के लिए धन्यवाद! यहां तक ​​कि अगर मुझे लगता है कि आपका मामला एक बढ़त मामला है, तो कोई और शायद इस मॉड्यूल से भी लाभान्वित होगा –

5

आप इसे वापस क्यों लेना चाहते हैं? एक कारण है कि इसे हटा दिया गया है और इस तरह आपको शायद इससे दूर जाना चाहिए।

एपीआई को बहिष्कृत करने के बारे में चर्चा उनके मुद्दे ट्रैकर पर #2440 के रूप में उपलब्ध है।

फ़ंक्शन req.params, req.body या req.query से पैरामीटर मान प्राप्त करने के लिए एक त्वरित और गंदा तरीका है। यह निश्चित रूप से कुछ मामलों में परेशानी का कारण बन सकता है, यही कारण है कि वे इसे हटा रहे हैं। अपने लिए फ़ंक्शन देखें here

तुम सिर्फ url पैरामीटर के लिए समारोह का उपयोग कर रहे हैं, तो आप सिर्फ इस req.query['smth'] or 'default' का एक चेक के साथ बदलना कर सकते हैं:

var param_old = req.param('test', 'default'); 
var param_new = req.query['test'] || 'default'; 

(कृपया ध्यान दें कि कोई रिक्त स्ट्रिंग false लिए मूल्यांकन किया जाता है, तो वे नहीं कर रहे हैं वास्तव में 100% बराबर। आप जो चाहते हैं वह निश्चित रूप से आपके ऊपर है, लेकिन अधिकांश भाग के लिए इससे कोई फर्क नहीं पड़ता।)

+1

नहीं, मैं कर रहा हूँ इन्स के लिए इसका इस्तेमाल कर रहा हूँ स्मारक जो अलग-अलग हैंडलर की सेवा करता है कि कार्य में उनके पैरामीटर को सर्वो, या क्वेरी स्ट्रिंग या बॉडी पैरामीटर के रूप में उम्मीद कर सकते हैं। इसमें - समारोह ने वही किया जो मैं चाहता था। उत्तर और संदर्भ –

+1

ओह ओकी के लिए धन्यवाद, ठीक उसी मामले में यह समझ में आ सकता है। मुझे अभी भी उम्मीद है कि यह उत्तर उन लोगों की मदद कर सकता है जो केवल क्वेरी पैरामीटर के लिए इसका उपयोग कर रहे हैं। –

+0

हाँ, मुझे लगता है कि मैं सहमत हूं। शायद हमें रीडमे में जोड़ना चाहिए।md इस pitfall –

11

एक्सप्रेस प्रलेखन के आधार पर हमने

पर इस express 3

req.param(fieldName) 

की तरह इस्तेमाल करना चाहिए पर express 4

req.params.fieldName 

निजी तौर पर मैं req.params.fieldName पसंद करते हैं बजाय req.param(fieldName)

+1

कृपया ध्यान दें कि वे बराबर नहीं हैं, req.param चेक req.params, req.body और req.query। विवरण के लिए मेरा जवाब देखें। –

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