2012-04-05 15 views
5

मैं एक्सप्रेस जेएस का उपयोग कर रहा हूं और मैं 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?', {}); 

उत्तर

7

अपने कोड है। रीडमी से

उदाहरण:

app.get('/admin/user/:id', 'admin.user.edit', function(req, res, next){ 
    //... 
}); 

//.. and a helper in the view files: 
url('admin.user.edit', {id: 2}) 
+0

मैं कुछ इस तरह के बारे में सोचा (और वास्तव में मैं इस सरल मामले को लागू किया था), लेकिन unfortunetly एक्सप्रेस का उपयोग करता '' एक विशेष चरित्र के रूप में?। यह चीजों को थोड़ा और जटिल बनाता है, क्योंकि url '/ users /: id? 'दोनों'/उपयोगकर्ता' और'/उपयोगकर्ता/1' से मेल खाते हैं। – freakish

+0

अपडेट किया गया। क्या तुम यही चाहते हो? – cababunga

+0

हाँ, मुझे लगता है कि यह काम करेगा। धन्यवाद! – freakish

5

मैं सिर्फ पैकेज reversable-router कि मार्ग के लिए अन्य समस्याओं के साथ इस हल करती बना लिया है:

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