2013-08-05 18 views
5

Expressjs uygulamasını yazıyorum. req.params.herthing her zaman dize ve sayı varsa ben user_id için bir sayı geçirir varsayalım her zaman dizedir.req.params.number, expressjs dizgisidir?

app.get('user/:user_id', function(req, res){ 
    console.log(typeof req.params.user_id); 
}); 

GET kullanıcı/21

bu dizeyi kaydeder.

Req.params.x için her zaman dize mi yazıyor?

+1

Kendi parametrelerinizi tanımlayabilirsiniz, bu durumda herhangi bir türde olabilirler. [Belge] (http://expressjs.com/api.html#app.param). – mak

+0

Express, 'RegExp' ile url dizesini basitçe ayrıştırır. Yani, bir sayı olması gerekiyorsa, kendiniz dönüştürebilirsiniz: 'req.params.x = parseInt (req.params.x)'. –

+2

İpucu: 'Number (req.params.x)' parseInt (req.params.x) 'dan daha hızlıdır' – randunel

cevap

4

Evet, tüm paramtlar dizgiler olacak.) (decodeURIComponent sonucu her zaman bir dize olduğundan m bir RegExp.exec sonucudur süre Yani val daima, bir dize olacaktır

var val = 'string' == typeof m[i] 
    ? decodeURIComponent(m[i]) 
    : m[i]; 

:

Bu

expressjs route.js elde edilir Eşleşen dizeleri bir dizi döndürür, bu yüzden m[i] bir dize olacağını varsayalım.

+0

Bu iyi bir yanıt değil. Her zaman dizeleri olduğunu bildiğinizden daha fazla bilgi vermelisiniz. Kaynağını bunun hakkında paylaşır mısın? – mak

+0

Önceki yorumun yanıtı: deneyimden. Ortalama yorumunuzu düzenlemekten hoşnut. – randunel

+0

Açıklamanız yanlış. 'decodeURIComponent' çağrılır (ve bir dizge döndürür) sadece 'm [i] 'bir dizgidir. Eğer m [i] 'bir dize değilse, o zaman' decodeURIComponent' denir ve 'val' bir dize olmayacaktır. – mak

İlgili konular