2017-03-17 103 views
-2

我嘗試使用下面的過濾器轉移包,但它失敗: 我已經建造到使用航線express.js:虛假路由在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({...}) 

所以當我請求第一URL一切工作正常,但是當我嘗試請求第二條路線時,我得到與第一條路線相同的響應。

有誰知道爲什麼會發生這種情況?

謝謝,謝謝。

回答

0

您的第一條路線的參數與第二條路線相同。
這意味着當你請求第二個路由時,它會首先測試第一個路由,導致它之前定義的路由。

這意味着,如果你要求的路線兩次與以下請求: url/billdetails/lastinvoices/12/123

您將獲得排到了第航線以下參數:

year: "lastinvoices" 
month: 12 
phoneId: 123 

你可能定義的第二條路線在此之前,讓它先嚐試一下。但我並不是100%肯定可以肯定,它會一直工作。

就我個人而言,我會重新命名路由,或者從正常的get-param中取出限制參數,例如:url/billdetails/lastinvoices/1?limit=1。 所以第二條路線將被定義爲:
/billdetails/lastinvoices/:number