Optional
options: PaginationOptions = {}Configuration options for pagination behavior
Configuration options for the pagination middleware.
PaginationOptions
Optional
defaultLimit?: numberDefault number of items per page when not specified in query parameters
Optional
maxLimit?: numberMaximum allowed limit to prevent excessive data retrieval
Optional
allowedSortFields?: string[]Array of field names that are allowed for sorting operations
Optional
allowedFilters?: string[]Array of filter parameter names that are allowed in query parameters
Optional
defaultSortField?: stringDefault field to sort by when sortBy is not specified or invalid
Optional
searchFields?: string[]Array of field names to search within when search parameter is provided
Express middleware function
// Basic usage with default options
app.get('/api/items', paginationMiddleware(), itemController.getItems);
// Advanced configuration for course listings
app.get('/api/courses',
paginationMiddleware({
defaultLimit: 10,
maxLimit: 50,
allowedSortFields: ['name', 'created_at', 'updated_at'],
allowedFilters: ['source_language', 'target_language', 'is_public'],
defaultSortField: 'created_at',
searchFields: ['name', 'description']
}),
courseController.getCourses
);
Express middleware that validates and normalizes pagination query parameters.
This middleware supports both traditional page-based pagination (page/limit) and modern offset-based pagination (offset/limit) strategies. It validates all query parameters using Zod schemas, enforces limits and allowed fields, and attaches the normalized pagination options to the request object for use by route handlers.
The middleware automatically handles parameter coercion, validation errors, and provides fallback values for missing parameters. It also supports flexible filtering, sorting, and full-text search capabilities based on configuration.