[SOLVED] When does the Express req.query variable get different types

Issue

I noticed that the type of query parameters in req.query is

string | string[] | QueryString.ParsedQS | QueryString.ParsedQS[]

but so far, whenever i used req.query i always got strings.

My questions are

  1. What is the QueryString.ParsedQS type?
  2. When will the parameter be an array?
  3. When will the parameter be a QueryString.ParsedQS

Solution

The type string | string[] | QueryString.ParsedQS | QueryString.ParsedQS[] is the type returned by qs.parse() method, take a look here at the declaration file: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/qs/index.d.ts#L57.

Take a look at the qs documentation for possible return values of qs.parse():
https://github.com/ljharb/qs

For req.query to be parsed from string to object you need to call express app.set('query parser', 'extended'), extended is the default value but you may have changed it in your code:
https://expressjs.com/en/api.html#app.set

Answered By – Andrei

Answer Checked By – Robin (BugsFixing Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *