Ramiro
Ramiro

Reputation: 44

Node.js Request params undefined

I have a get route that receives two parameters "limit" and "page".

router.get('/:limit/:page', userController.list);

class UserController{
    public list(req:Request, res:Response): void{
        const limit:number = +req.params.limit || 25;
        const page:number = +req.params.page || 0; }
}
export const userController: UserController = new UserController();

The problem is these params are undefined when I make the request from postman.

localhost:3000/api/users/?limit=2&page=1

Upvotes: 0

Views: 1610

Answers (1)

Phil
Phil

Reputation: 164795

You're passing query parameters but your route wants route parameters.

To use route parameters, your request should look like http://localhost:3000/api/users/2/1

Typically though, pagination is passed as query parameters in which case your route handler should look like this

import { Request, Response } from "express";

interface PaginationQuery {
  limit?: number;
  page?: number;
}

type PaginationRequest = Request<{}, any, any, PaginationQuery>;

router.get('/', userController.list);

class UserController{
  public list(req: PaginationRequest, res: Response): void {
    const limit = req.query.limit ?? 25;
    const page = req.query.page ?? 0;
  }
}

Upvotes: 2

Related Questions