मैं एक्सप्रेस जेएस का उपयोग कर रहा हूं और मैं Django के reverse
फ़ंक्शन के समान कार्यक्षमता चाहता हूं। तो अगर मैं उदाहरणएक्सप्रेस जेएस रिवर्स यूआरएल रूट (डीजेगो स्टाइल)
app.get('/users/:id/:name', function(req, res) { /* some code */ })
के लिए एक मार्ग है, मैं
reverse('/users/:id/:name', 15, 'John');
या और भी बेहतर उदाहरण
के लिए एक समारोह का उपयोग करना चाहतेreverse('/users/:id/:name', { id : 15, name : 'John' });
मुझे यूआरएल दे देंगे जो /users/15/John
। क्या ऐसा कार्य मौजूद है? और यदि नहीं, तो क्या आपके पास कोई विचार है कि इस तरह के फ़ंक्शन को लिखना है (एक्सप्रेस 'रूटिंग एल्गोरिदम पर विचार करना)?
function reverse(url, obj) {
return url.replace(/(\/:\w+\??)/g, function (m, c) {
c=c.replace(/[/:?]/g, '');
return obj[c] ? '/' + obj[c] : "";
});
}
reverse('/users/:id/:name', { id: 15, name: 'John' });
reverse('/users/:id?', { id: 15});
reverse('/users/:id?', {});
मैं कुछ इस तरह के बारे में सोचा (और वास्तव में मैं इस सरल मामले को लागू किया था), लेकिन unfortunetly एक्सप्रेस का उपयोग करता '' एक विशेष चरित्र के रूप में?। यह चीजों को थोड़ा और जटिल बनाता है, क्योंकि url '/ users /: id? 'दोनों'/उपयोगकर्ता' और'/उपयोगकर्ता/1' से मेल खाते हैं। – freakish
अपडेट किया गया। क्या तुम यही चाहते हो? – cababunga
हाँ, मुझे लगता है कि यह काम करेगा। धन्यवाद! – freakish