2015-06-09 17 views
6

So che i controlli Express per stringa di query (ad es.? A = 1 & b = 2) e lo analizzano se presenti per impostazione predefinita. E che req.query è l'oggetto che contiene le coppie chiave/valore. C'è un modo per disabilitare questo comportamento e ignorare completamente la qs?
Ho bisogno di questo perché analizzo il lato client stringa di query, e dal momento che ricevo un'enorme quantità di richieste e il qs sono piuttosto lunghi non voglio sprecare risorse del server ogni volta che analizzo la stringa di query (il che significa che Express avrebbe bisogno per decodificare i componenti URI nella stringa, dividere la stringa, eseguire un ciclo for per ciascuna coppia di valori chiave, eseguire un'altra divisione per ogni coppia, creare un nuovo oggetto ecc. che è molto costoso). È possibile?Come dire a Express NON analizzare la stringa di query della richiesta?

+0

Quale versione di espressa stai usando? – javierfdezg

+0

@javierfdezg versione 4.11.2 precisamente –

risposta

4

È possibile configurare il parser query (dare un'occhiata alla doc):

app.disable('query parser') 

posto dopo l'inizializzazione espresso e prima che il router.

si potrebbe anche passare una funzione vuota al parser di query nel caso in cui è necessario un qualche tipo di messa a punto in futuro:

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

Fatto come dici tu. ma se vado a /? a = 1 & b = 2 e faccio 'console.log (req.query)' emette ancora '{a: 1, b: 2}' –

+1

Dovrebbe essere usato app.disable invece di impostare . Grazie comunque) –

Problemi correlati