AceDevHub
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.

ApproachNotes
URL.searchParamsPreferred — standards-based
querystring.parse (legacy)Returns plain object; prototype pollution risk on old patterns
Framework queryFastify 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");