Beginner Node.js Interview QuestionsBeginnerPractical
Node.js · Question 30
How do you parse query strings in Node.js?
Direct answer
Use URLSearchParams or new URL(req.url, base).searchParams — get(), getAll(), has() for filters and pagination; validate and coerce types before using in SQL or business logic.
Query strings carry optional filters — ?page=2&limit=20&difficulty=beginner — without extra path segments. REST list endpoints depend on consistent parsing.
| Approach | Notes |
|---|---|
| URL.searchParams | Preferred — standards-based |
| querystring.parse (legacy) | Returns plain object; prototype pollution risk on old patterns |
| Framework query | Fastify req.query — parsed automatically |
- Repeated keys — ?tag=js&tag=node → getAll('tag') returns array.
- Validation — query values are strings; Number(page) or Zod schema before DB offset.
- Defaults — limit = Number(params.get('limit') ?? 20); cap max to prevent abuse.
query-parse.mjs
function parseListQuery(reqUrl) {
const { searchParams } = new URL(reqUrl, "http://localhost");
const page = Math.max(1, Number(searchParams.get("page") ?? 1));
const limit = Math.min(100, Number(searchParams.get("limit") ?? 20));
const difficulty = searchParams.get("difficulty") ?? undefined;
return { page, limit, difficulty, offset: (page - 1) * limit };
}
// GET /interviews?page=2&limit=10&difficulty=beginner
parseListQuery("/interviews?page=2&limit=10&difficulty=beginner");