Bird
Raised Fist0
Expressframework~5 mins

req.query for query strings in Express - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is req.query in Express?

req.query is an object in Express that holds the query string parameters sent in the URL of a GET request.

Click to reveal answer
beginner
How do you access a query parameter named name in Express?

You use req.query.name to get the value of the name parameter from the URL query string.

Click to reveal answer
beginner
Example URL: /search?term=books&sort=asc. How does req.query look?

req.query will be an object: { term: 'books', sort: 'asc' }.

Click to reveal answer
beginner
What type of data does req.query contain?

req.query contains all query parameters as strings inside an object. Even numbers or booleans come as strings.

Click to reveal answer
intermediate
Can req.query handle multiple values for the same key?

Yes, if the URL has repeated keys like ?tag=js&tag=node, req.query.tag will be an array: ['js', 'node'].

Click to reveal answer
What does req.query represent in Express?
AAn object containing URL query parameters
BThe body of a POST request
CThe headers of the HTTP request
DThe cookies sent by the client
How do you access the value of ?page=3 in Express?
A<code>req.headers.page</code>
B<code>req.query.page</code>
C<code>req.body.page</code>
D<code>req.params.page</code>
If the URL is /items?color=red&color=blue, what is req.query.color?
A'red'
Bundefined
C'blue'
D['red', 'blue']
What data type are values inside req.query?
AStrings
BNumbers
CBooleans
DObjects
Which HTTP method usually sends data accessible via req.query?
APUT
BPOST
CGET
DDELETE
Explain how req.query works in Express and how you use it to get query string values.
Think about how URLs have ?key=value and how Express reads that.
You got /5 concepts.
    Describe a real-life example where you might use req.query in a web app.
    Imagine a shopping site where you filter products by category or price.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does req.query represent in an Express app?
      easy
      A. An object containing URL query parameters sent after the question mark
      B. The body data sent in a POST request
      C. The headers of the HTTP request
      D. The cookies sent by the client

      Solution

      1. Step 1: Understand the role of req.query

        req.query holds key-value pairs from the URL query string, which comes after the question mark in a URL.
      2. Step 2: Differentiate from other request parts

        Body data is accessed via req.body, headers via req.headers, and cookies via req.cookies. So, req.query is specifically for query parameters.
      3. Final Answer:

        An object containing URL query parameters sent after the question mark -> Option A
      4. Quick Check:

        req.query = URL query parameters [OK]
      Hint: Remember: query = URL after '?' [OK]
      Common Mistakes:
      • Confusing query parameters with body data
      • Thinking req.query holds headers or cookies
      • Assuming req.query is a string instead of an object
      2. Which of the following is the correct way to access a query parameter named id in Express?
      easy
      A. req.params.id
      B. req.query.id
      C. req.body.id
      D. req.headers.id

      Solution

      1. Step 1: Identify where query parameters are stored

        Query parameters are stored in req.query, so to get the value of id, use req.query.id.
      2. Step 2: Differentiate from other request properties

        req.params is for route parameters, req.body is for POST data, and req.headers is for HTTP headers.
      3. Final Answer:

        req.query.id -> Option B
      4. Quick Check:

        Query param 'id' = req.query.id [OK]
      Hint: Query params always use req.query.[name] [OK]
      Common Mistakes:
      • Using req.params for query strings
      • Trying to get query data from req.body
      • Accessing query params from headers
      3. Given this Express route handler, what will be logged if the URL is /search?term=books&page=2?
      app.get('/search', (req, res) => {
        console.log(req.query.term);
        console.log(req.query.page);
        res.send('Done');
      });
      medium
      A. term\npage
      B. undefined\nundefined
      C. books\n2
      D. books\nundefined

      Solution

      1. Step 1: Understand the URL query string

        The URL has query parameters: term=books and page=2. These are accessible via req.query.term and req.query.page.
      2. Step 2: Check what is logged

        The code logs req.query.term which is "books" and req.query.page which is "2" (strings).
      3. Final Answer:

        books 2 -> Option C
      4. Quick Check:

        req.query.term = 'books', req.query.page = '2' [OK]
      Hint: Query values come as strings from req.query [OK]
      Common Mistakes:
      • Expecting numbers instead of strings
      • Confusing query params with route params
      • Assuming undefined if query exists
      4. What is the problem with this Express route handler?
      app.get('/items', (req, res) => {
        const page = req.query.page;
        if (page > 0) {
          res.send(`Page number is ${page}`);
        } else {
          res.send('Invalid page');
        }
      });
      medium
      A. res.send cannot be called inside an if statement
      B. req.query.page is undefined, causing a crash
      C. The route should use req.params instead of req.query
      D. req.query.page is a string, so numeric comparison may fail

      Solution

      1. Step 1: Identify the type of req.query.page

        Query parameters are strings by default, so req.query.page is a string, e.g., "1".
      2. Step 2: Understand comparison behavior

        Comparing a string with a number using > can lead to unexpected results because string comparison is lexicographic. The code should convert page to a number first.
      3. Final Answer:

        req.query.page is a string, so numeric comparison may fail -> Option D
      4. Quick Check:

        Convert query strings to numbers before numeric checks [OK]
      Hint: Convert query strings to numbers before numeric comparisons [OK]
      Common Mistakes:
      • Not converting query params to numbers
      • Assuming req.query.page is a number
      • Using req.params instead of req.query incorrectly
      5. You want to create an Express route that reads optional query parameters sort and limit. If limit is missing or not a positive number, it should default to 10. Which code snippet correctly implements this behavior?
      hard
      A. app.get('/data', (req, res) => { const sort = req.query.sort || 'asc'; const limit = Number(req.query.limit) > 0 ? Number(req.query.limit) : 10; res.send(`Sort: ${sort}, Limit: ${limit}`); });
      B. app.get('/data', (req, res) => { const sort = req.query.sort; const limit = req.query.limit || 10; res.send(`Sort: ${sort}, Limit: ${limit}`); });
      C. app.get('/data', (req, res) => { const sort = req.query.sort ?? 'desc'; const limit = parseInt(req.query.limit) || 10; res.send(`Sort: ${sort}, Limit: ${limit}`); });
      D. app.get('/data', (req, res) => { const sort = req.query.sort || 'desc'; const limit = req.query.limit > '0' ? req.query.limit : 10; res.send(`Sort: ${sort}, Limit: ${limit}`); });

      Solution

      1. Step 1: Default sort parameter

        Use req.query.sort || 'asc' to default falsy/missing values to 'asc'.
      2. Step 2: Validate limit as positive number

        Number(req.query.limit) > 0 ? Number(req.query.limit) : 10 properly converts, checks positivity (>0), and defaults for missing/undefined/NaN/zero/negative.
      3. Step 3: Why others fail

        B: No sort default; limit || 10 accepts invalid like '-1'. C: parseInt(req.query.limit) || 10 accepts negatives ('-1' is truthy). D: req.query.limit > '0' does string comparison, accepts invalid like 'a' ("a" > "0").
      4. Final Answer:

        Number(req.query.limit) > 0 ? Number(req.query.limit) : 10 -> Option A
      5. Quick Check:

        Convert and validate query params before use [OK]
      Hint: Always convert and validate query params before use [OK]
      Common Mistakes:
      • Not converting query params to numbers
      • Using || default with parseInt causing wrong defaults
      • Comparing strings directly to numbers
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard