2015-03-09 17 views
11

Chúng tôi đang chuyển từ ExpressJS 3 đến ExpressJS 4, và chúng tôi lưu ý rằng các API sau đây đang được chấp nhận:thay thế cho req.param() mà bị phản đối trong Express 4

req.param(fieldName) 
req.param(fieldName, defaultValue) 

Có một middleware đó sẽ đem lại các API này trở lại, giống như các API khác đã được 'bên ngoài' từ các mô-đun độc lập?

Trả lời

7

Ok, sau khi đọc các chủ đề được tham chiếu bởi @Ineentho, chúng tôi quyết định đưa ra câu trả lời sau:

https://github.com/osher/request-param

Một kết nối/middleware nhanh để cho phép lại req.param (tên, mặc định) API bị phản đối ở tốc 4

Các trung không chỉ mang lại các chức năng goo'old. Nó cũng cho phép bạn tùy chỉnh thứ tự của các bộ sưu tập từ đó params được lấy ra, cả hai như là quy tắc mặc định, và theo gọi :-)

Hãy vui vẻ!

+1

Cảm ơn bạn đã đóng góp giải pháp cho web như một phần mềm trung gian! Ngay cả khi tôi nghĩ trường hợp của bạn là một trường hợp cạnh tranh, ai đó có thể cũng sẽ được hưởng lợi từ mô-đun này –

5

Tại sao bạn muốn đưa nó trở lại? Có một lý do khiến nó không được chấp nhận và vì vậy bạn có lẽ nên tránh xa nó.

Thảo luận về lý do tại sao họ không dùng API có sẵn tại bộ theo dõi vấn đề của họ dưới dạng #2440.

Hàm là cách nhanh chóng và bẩn để nhận giá trị tham số từ req.params, req.body hoặc req.query. Điều này tất nhiên có thể gây ra rắc rối trong một số trường hợp, đó là lý do tại sao họ đang loại bỏ nó. Xem chức năng cho chính mình here.

Nếu bạn chỉ sử dụng chức năng cho các thông số url, bạn chỉ có thể thay thế nó với điều này một tấm séc cho req.query['smth'] or 'default':

var param_old = req.param('test', 'default'); 
var param_new = req.query['test'] || 'default'; 

(Xin lưu ý rằng một chuỗi rỗng được đánh giá để false, vì vậy họ không thực sự là 100% bằng nhau. Điều bạn muốn dĩ nhiên là tùy thuộc vào bạn, nhưng phần lớn nó không quan trọng.)

+1

Nope, Tôi sử dụng nó cho ins trumentation phục vụ xử lý khác nhau mà trong hành động có thể mong đợi các thông số của họ như param, OR chuỗi truy vấn hoặc các thông số cơ thể. Trong này - chức năng đã làm chính xác những gì tôi muốn. Cảm ơn câu trả lời và các tài liệu tham khảo –

+1

Oh okey, tốt trong trường hợp đó nó có thể có ý nghĩa. Tôi vẫn hy vọng rằng câu trả lời này có thể giúp những người sử dụng nó chỉ cho các tham số truy vấn. –

+0

Vâng, tôi nghĩ tôi đồng ý. Có lẽ chúng ta nên thêm vào README.md một lưu ý về pitfall này –

11

Dựa trên tốc Documentation, chúng ta nên sử dụng như thế này

On express 3

req.param(fieldName) 

On express 4

req.params.fieldName 

Cá nhân tôi thích req.params.fieldName thay req.param(fieldName)

+1

Xin lưu ý rằng chúng không bằng nhau, req.param kiểm tra req.params, req.body và req.query. Xem câu trả lời của tôi để biết chi tiết. –

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