2016-09-16 2 views
2

Ich habe diese Router deklariert in express.js, ich frage mich, warum die run user ausgelöst wurde, wenn ich localhost: 3000/myname/Profil zu öffnen.Router in express.js Basis auf Parameter

router.get('/:username', function(req, res, next) 
{ 
    console.log('run user') 
}); 

router.get('/:username/profile', function(req, res, next) 
{ 
    console.log('run user profile') 
}); 

Ich erwarte es nicht, wie man das löst? bitte jemand mir helfen? Vielen Dank im Voraus ....

+0

Ich kann das Problem nicht reproduzieren. Bitte senden Sie den Rest des Codes. –

+0

wirklich passiert es? – Beginner

Antwort

0

Sind Sie sicher? Ich habe versucht, Ihren Code und es ausgelöst run user profile .Mai sollten Sie den gesamten Code anzeigen.

1

Ordnen Sie einfach den Code wie unten gezeigt neu an und Ihr Code sollte gut funktionieren.

router.get('/:username/profile', function(req, res, next) 
{ 
    console.log('run user profile') 
}); 

router.get('/:username', function(req, res, next) 
{ 
    console.log('run user') 
}); 

Das Problem mit der Reihenfolge, in der die Routen definiert, Da beide Routen /:username haben, wenn Sie http://localhost:3000/myname/profile. treffen, wird die erste Strecke der Vorzug gegeben, da es die uri übereinstimmt.

Siehe dazu auch diesen Beitrag auf Stackoverflow Express Route Benennung und Sortierung - Node.js Express route naming and ordering: how is precedence determined?