2015-06-09 26 views
6

Tôi biết rằng Kiểm tra nhanh cho chuỗi truy vấn (ví dụ: a = 1 & b = 2) và phân tích cú pháp đó nếu hiển thị theo mặc định. Và req.query đó là đối tượng chứa các cặp khóa/giá trị. Có cách nào để vô hiệu hóa hành vi này và bỏ qua qs hoàn toàn không?
Tôi cần điều này bởi vì tôi phân tích cú pháp phía khách truy vấn chuỗi truy vấn và vì tôi nhận được số lượng yêu cầu rất lớn và các q khá dài nên tôi không muốn lãng phí tài nguyên máy chủ mỗi khi phân tích chuỗi truy vấn (có nghĩa là Express sẽ cần để giải mã các thành phần URI trong chuỗi, chia chuỗi, thực hiện vòng lặp for cho mỗi cặp giá trị khóa, thực hiện phân tách khác cho mỗi cặp, tạo đối tượng mới, v.v. rất tốn kém). Điều này có thể không?Làm cách nào để yêu cầu Express NOT phân tích chuỗi truy vấn của yêu cầu?

+0

Phiên bản nào của tốc hành bạn đang sử dụng? – javierfdezg

+0

@javierfdezg phiên bản 4.11.2 chính xác –

Trả lời

4

Bạn có thể cấu hình các phân tích cú pháp truy vấn (có một cái nhìn vào doc):

app.disable('query parser') 

Nơi nó sau khi khởi tạo nhanh và trước khi các bộ định tuyến.

Bạn cũng có thể vượt qua một chức năng có sản phẩm nào để phân tích cú pháp truy vấn chỉ trong trường hợp bạn cần một số loại tinh chỉnh trong tương lai:

app.set('query parser', function(qs, options) { 
// qs is a query string, process it here 
}); 
+0

Xong như bạn nói. nhưng nếu tôi đi đến /? a = 1 & b = 2 và làm 'console.log (req.query)' nó vẫn xuất ra '{a: 1, b: 2}' –

+1

Tắt app.disable nên được sử dụng thay vì đặt . Dù sao cũng cảm ơn bạn) –

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