@nestjsx/crud-request package provides utilities for building and parsing complex queries. It supports filtering, sorting, pagination, field selection, and relation joins through URL query parameters.
Query parameters
Clients can control API responses using standardized query parameters:Field selection
Select specific fields to include in the response:fields and select parameters work identically.
Filtering
Filter results using comparison operators:Comparison operators
The framework supports these filter operators:Case-insensitive variants are available by appending
L to the operator: $eqL, $contL, $startsL, etc./home/daytona/workspace/source/packages/crud-typeorm/src/typeorm-crud.service.ts:854-971:
OR conditions
Use theor parameter for OR logic:
Advanced search
For complex queries, use thes (search) parameter with JSON:
$and and $or conditions:
/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:103-108:
Sorting
Sort results by one or more fields:Pagination
Paginate results using limit/offset or page-based pagination:Joining relations
Load related entities:Cache control
Control query caching:Soft deletes
Include soft-deleted records:Request query builder
TheRequestQueryBuilder class helps build query strings programmatically in frontend applications:
/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:24-243:
Builder methods
select()
Select specific fields:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:95-100:
search()
Add complex search conditions:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:103-108:
setFilter() and setOr()
Add filter conditions:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:110-118:
Filters can also be passed as arrays:
setJoin()
Join relations:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:120-131:
sortBy()
Sort results:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:133-144:
setLimit(), setOffset(), setPage()
Pagination controls:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:146-169:
resetCache()
Bypass cache:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:161-164:
setIncludeDeleted()
Include soft-deleted records:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:166-169:
Create from params
Build a query from a params object:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:196-211:
Custom query options
Customize parameter names globally:/home/daytona/workspace/source/packages/crud-request/src/request-query.builder.ts:25-41:
ParsedRequest decorator
In controllers, access parsed request data using the@ParsedRequest() decorator:
CrudRequest interface contains:
Validation
Query parameters are automatically validated. Invalid requests return 400 Bad Request:Validation is based on the controller’s
query configuration. Fields, filters, and joins must be explicitly allowed.Examples
Frontend integration
React example using the query builder:Complex filtering
Combine multiple filter types:Next steps
Controllers
Learn how to configure query options in controllers
Services
Understand how services process requests