2013-01-19 13 views
48

के बीच अंतर req.query [myParam] और req.params.myParam के माध्यम से QUERY_STRING तर्क प्राप्त करने के बीच कोई अंतर है? यदि हां, तो मुझे किस का उपयोग करना चाहिए?Node.js: req.query [] और req.params

धन्यवाद।

उत्तर

62

req.params में मार्ग पैरामीटर (यूआरएल के पथ भाग में) शामिल हैं, और req.query में यूआरएल क्वेरी पैरामीटर (यूआरएल में ? के बाद) शामिल हैं।

आप दोनों स्थानों (साथ ही req.body) में पैरामीटर देखने के लिए req.param(name) का भी उपयोग कर सकते हैं, लेकिन यह विधि अब बहिष्कृत है।

+0

आह, ठीक है, धन्यवाद, इसलिए दोनों एक्सप्रेस द्वारा प्रदान की जाती है। और POST डेटा मैं req.body.myParam के माध्यम से उपयोग करता हूं? –

+0

दाएं। जो भी आप उपयोग करने की कोशिश कर रहे हैं उस पर निर्भर करता है। – JohnnyHK

+0

यह भी ध्यान दें: "req.body, req.params, और req.query की प्रत्यक्ष पहुंच स्पष्टता के लिए अनुकूल होनी चाहिए - जब तक कि आप वास्तव में प्रत्येक ऑब्जेक्ट से इनपुट स्वीकार नहीं करते।" - एक्सप्रेस प्रलेखन –

122

इस मार्ग

app.get('/hi/:param1', function(req,res){}); 

को देखते हुए और इस URL http://www.google.com/hi/there?qs1=you&qs2=tube

दिया आप होगा:

अनुरोध। क्वेरी

{ 
    qs1: 'you', 
    qs2: 'tube' 
} 

अनुरोध। पैरामीटर

{ 
    param1: 'there' 
} 

Express req.params >>

+7

उत्कृष्ट, वास्तव में स्पष्ट! – abernier

+0

अगर मुझे/hi/प्राप्त करने की आवश्यकता है तो क्या होगा? – daniel

+0

req.url या req.originalUrl या req._originalUrl पर एक नज़र डालें, फिर '/' पर विभाजित करें – ruffrey

1

अब आप डॉट नोटेशन का उपयोग कर क्वेरी उपयोग करने में सक्षम होना चाहिए।

आप तक पहुँचने के लिए चाहते हैं, तो कहते हैं कि तुम /checkEmail?type=email&utm_source=xxxx&email=xxxxx&utm_campaign=XX पर एक प्राप्त अनुरोध प्राप्त कर रहे हैं और आप क्वेरी इस्तेमाल किया बाहर लाने के लिए चाहते हैं।

var type = req.query.type, 
    email = req.query.email, 
    utm = { 
    source: req.query.utm_source, 
    campaign: req.query.utm_campaign 
    }; 

पैरामीटर (उदाहरण) की तरह अनुरोध, कुछ प्राप्त करने के लिए स्वयं परिभाषित पैरामीटर के लिए उपयोग किया जाता है:

router.get('/:userID/food/edit/:foodID', function(req, res){ 
//sample GET request at '/xavg234/food/edit/jb3552' 

var userToFind = req.params.userID;//gets xavg234 
var foodToSearch = req.params.foodID;//gets jb3552 
User.findOne({'userid':userToFind}) //dummy code 
    .then(function(user){...}) 
    .catch(function(err){console.log(err)}); 
});