Challenge - 5 Problems
Raw Query Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of raw SQL query execution in Express
Consider this Express route using a raw SQL query with a database client. What will be the output sent to the client?
Express
app.get('/users', async (req, res) => { const result = await db.query('SELECT name FROM users WHERE id = $1', [1]); res.send(result.rows[0].name); });
Attempts:
2 left
💡 Hint
Think about how the query result is structured and how to access the first user's name.
✗ Incorrect
The query returns an object with a 'rows' array. Accessing rows[0].name gets the first user's name, which is sent as a string.
❓ component_behavior
intermediate2:00remaining
Behavior of raw query with parameter injection
What happens if a raw SQL query in Express is constructed by concatenating user input directly, like this?
Express
app.get('/search', async (req, res) => { const term = req.query.term; const query = `SELECT * FROM products WHERE name LIKE '%${term}%'`; const result = await db.query(query); res.json(result.rows); });
Attempts:
2 left
💡 Hint
Think about what happens when user input is directly inserted into SQL strings.
✗ Incorrect
Directly inserting user input into SQL strings without escaping allows attackers to inject malicious SQL code.
📝 Syntax
advanced2:00remaining
Correct syntax for parameterized raw query in Express
Which option shows the correct way to write a parameterized raw SQL query using a PostgreSQL client in Express?
Attempts:
2 left
💡 Hint
PostgreSQL uses $1, $2 placeholders for parameters.
✗ Incorrect
PostgreSQL client libraries use $1, $2 placeholders with an array of values for parameters.
🔧 Debug
advanced2:00remaining
Debugging error from raw query in Express
This Express route throws an error when running a raw query. What is the cause?
Express
app.get('/orders', async (req, res) => { const result = await db.query('SELECT * FROM orders WHERE date = $1', [req.query.date]); res.json(result.rows); });
Attempts:
2 left
💡 Hint
Check how parameters are passed to the query function.
✗ Incorrect
The query method expects parameters as an array. Passing a string causes a runtime error.
🧠 Conceptual
expert2:00remaining
Why use raw queries in Express apps?
Which reason best explains when you should use raw SQL queries in an Express app instead of an ORM?
Attempts:
2 left
💡 Hint
Think about the trade-offs between ORMs and raw SQL.
✗ Incorrect
Raw queries allow fine control and optimizations for complex or performance-critical database operations.