2015-03-11 13 views
19

Tôi không chắc chắn nếu đây là lỗi trong Express, hoặc nếu tôi chỉ làm một cái gì đó sai (có lẽ sau này), nhưng tôi đang tìm kiếm req .params chỉ giữ lại các tham số trong bước cuối cùng của yêu cầu. Để chứng minh những gì tôi muốn nói:Express Router undefined params với router.use khi chia nhỏ các tập tin

làm việc Ví dụ:

router.get('/:id/test', function(req, res){ 
    // req.params.id is not undefined 
}); 

không hoạt động :(

Tập 1:

router.use('/:id', require('./file2')); 

Tập 2:

router.get('/test', function(req, res){ 
    // req.params.id is undefined?! 
}); 

Bây giờ ... ở trên dường như hoàn toàn phi lý với tôi, khi máy phát Express định nghĩa tuyến đường theo cách trên - và nó vẫn phải được xác định trong đường dẫn ở đâu đó. Chắc chắn tôi vẫn có thể truy cập "id"?

Vì vậy, về cơ bản, tôi có thiếu gì đó không? Đây có phải là cố ý/là nó được ghi chép? FWIW Tôi đang sử dụng Express v4.12.0.

Tuyên bố từ chối trách nhiệm: điều tệp có thể không liên quan, nhưng tốt hơn để an toàn hơn xin lỗi.

Trả lời

29

Khi bạn tạo Router trong File 2, bạn cần phải cho biết thông số kế thừa từ cha mẹ.

var router = express.Router({mergeParams: true}); 

http://expressjs.com/api.html#router

+0

Bah, tôi biết nó sẽ là một cái gì đó đơn giản mà tôi nhìn qua. Ngạc nhiên là tôi không bao giờ gặp phải điều này trước đây ... Cảm ơn bạn đã tip;) – whitfin

+0

Tôi chỉ có thể đạt được nó khi thêm '{mergeParams: true}' vào tệp chính của tôi (Express 4.13.4). Đã chỉnh sửa câu trả lời vì một số người có thể cần câu trả lời. – George

Các vấn đề liên quan