2017-03-17 3 views
-2

Je suis en train d'utiliser le filtre suivant pour détourner des paquets, mais il échoue: J'ai construire à l'aide de routes express.js:routage Faux dans express.js

app.get('/billdetails/:year/:month/:phoneId', function (req, res, next) { 
    var db = req.db; 
    var year = req.params.year; 
    var month = req.params.month; 
    var phoneId = req.params.phoneId; 
    async.parallel({...}) 

app.get('/billdetails/lastinvoices/:number/:limit', function (req, res, next) { 
    var db = req.db; 
    var number = req.params.number; 
    var limit = req.params.limit; 
    async.parallel({...}) 

Alors, quand je demande la première URL tout fonctionne bien, mais quand j'essaie de demander la deuxième route, je reçois la même réponse que la première.

Est-ce que quelqu'un sait pourquoi cela se produit?

Cordialement et merci.

Répondre

0

Votre première route prend la même quantité de paramètres que la seconde.
Cela signifie que lorsque vous demandez la deuxième route, elle testera la première en premier, car elle est définie avant.

Cela signifie que si vous demandez la route deux avec la requête suivante: url/billdetails/lastinvoices/12/123

Vous serez dirigé vers la première route avec les paramètres suivants:

year: "lastinvoices" 
month: 12 
phoneId: 123 

Vous pouvez éventuellement définir la deuxième voie avant et par là, essayons cela en premier. Mais je ne suis pas sûr à 100% qu'il serait sûr de parier que ça marchera toujours.

Personnellement, je renommerais la route ou plutôt j'obtiendrais le paramètre limite à partir d'un get-param normal, à savoir: url/billdetails/lastinvoices/1?limit=1 à la place. La deuxième route serait définie comme suit:
/billdetails/lastinvoices/:number