2016-04-13 21 views
2

(onlar alt sorgu sınırı yok;) aşağıdaki URL'yi bölmek çalışıyorum ile express adlandırma '0' Öğe:RE kullanarak ve rota

www.zookeeper.com/api/ hayvanat bahçesi/maymun/içine 1/yem

: aşağıdaki kodda

{ 
    "Main": "zoo", 
    "Sub": "/monkey/1/feed" 
} 

, son karakteri her zaman SUB_REQUEST alanda eksik.

router.get("/:BASE_REQUEST/*:SUB_REQUEST",function(req,res) 
{ 
    res.json(
    { 
     "Main":req.params.BASE_REQUEST,     
     "Sub":req.params.SUB_REQUEST+req.params[0]//append last char hack! 
    }); 
}); 

Req.params'a bakarsanız, her zaman gizemli bir '0' olur.

{ 
    '0': 'd', 
    BASE_REQUEST: 'zoo', 
    SUB_REQUEST: '/monkey/1/fee' 
} 

birisi bu davranışı açıklar mısınız? Bu '0' nereden geliyor? Ben ekspres sürümünü kullanıyorum

4.12.4

cevap

1

Tabii, burada da oluyor şey rota aslında onlar 2.

seçmek dışarı düşünüyorum 3 rota params, seçmek dışarı olmasıdır Rotanın işleyicisinde console.log(req.params); yapıyor denerseniz, /bob/is/your/uncle bir istek aşağıdaki nesne sonuçlanacağını göreceksiniz: iki pa adında çünkü

{ '0': 'is/your/uncl', BASE_REQUEST: 'bob', SUB_REQUEST: 'e' }

That rams, ve orada da adlandırılmamış joker var, bu da varsayılan olarak '0' ismini ifade eder. Üçüncü paragraf rotanın en az bir kısmını tüketmelidir, bu yüzden son harfi ele geçirir. Sorunu nasıl yazdığınızı düşünmediğiniz sürece, makinenizin neden SUB ve 0'ı tersine çevirdiğini bilmiyorum.

:SUB_REQUEST'dan kurtulursanız, istediğiniz gibi çalışması gerekir, yalnızca req.params.0 (veya req.params['0']) aracılığıyla joker bit'e başvurmanız gerekir. Eskiden Express'in önceki sürümlerinde bir joker karakterine sahip olma yeteneği vardı, ancak artık dokümanlar içinde bulamıyorum, bu yüzden başka şeylerin daha iyi iş çıkarmasını bekledim.

+0

thx! Çıkışı tekrar kontrol ettim, aynen benim sorum yazdığım gibi. –

+0

Yine de, eğer üçüncü paragrafı kaldırırsanız, aradığınız şeyi elde edebilmeniz gerekir. Bunu denedin mi? – Paul

+0

Yep, onun çalışması, "Alt sorgu" '0'da. –