Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
DynamicQueryBuilderModule
✓ import { DynamicQueryBuilderModule } from 'nestjs-rest-query'
✗ const DynamicQueryBuilderModule = require('nestjs-rest-query').DynamicQueryBuilderModule
Module is exported as named ESM. For CommonJS use the import syntax above (NestJS requires ESM imports for decorators).
QueryParams
✓ import { QueryParams } from 'nestjs-rest-query'
Type for query params object. Also importable from subpaths: 'nestjs-rest-query/drizzle' etc.
DrizzleAdapter
✓ import { DrizzleAdapter } from 'nestjs-rest-query/drizzle'
✗ import { DrizzleAdapter } from 'nestjs-rest-query'
Subpath exports are required for adapter-specific types. Using the root import for DrizzleAdapter will fail.
Full NestJS module setup with DynamicQueryBuilderModule, controller decorator, and TypeORM service integration.
import { Module } from '@nestjs/common';
import { DynamicQueryBuilderModule } from 'nestjs-rest-query';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './user.entity';
import { UserController } from './user.controller';
import { UserService } from './user.service';
@Module({
imports: [
DynamicQueryBuilderModule.forRoot({
pagination: { defaultPerPage: 20, maxPerPage: 100 },
}),
TypeOrmModule.forFeature([User]),
],
controllers: [UserController],
providers: [UserService],
})
export class UserModule {}
// user.controller.ts
import { Controller, Get } from '@nestjs/common';
import { QueryParams } from 'nestjs-rest-query/query-params';
import { UseQueryBuilder } from 'nestjs-rest-query';
import { UserService } from './user.service';
import { User } from './user.entity';
@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
@Get()
@UseQueryBuilder({
allowedFilters: ['email', 'firstName', 'lastName', 'age'],
allowedSorts: ['createdAt', 'email', 'firstName'],
allowedIncludes: ['posts'],
searchFields: ['firstName', 'lastName', 'email'],
})
async findAll(@QueryParams() params: any) {
return this.userService.findAll(params);
}
}
// user.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
import { FindOptions } from 'nestjs-rest-query';
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private readonly userRepository: Repository<User>,
) {}
async findAll(query: any) {
const { data, total, page, perPage, lastPage } = await this.userRepository.find({
...query.buildFindOptions(),
});
return { data, total, page, perPage, lastPage };
}
}
Errors
Common errors & fixes
Cannot find module 'nestjs-rest-query/drizzle' or its corresponding type declarations.
Using root import path for ORM adapter that requires subpath export.
fixImport from 'nestjs-rest-query/drizzle' (not 'nestjs-rest-query'). Ensure your tsconfig.json includes the moduleResolution: 'node16' or 'bundler'.
DynamicQueryBuilderModule is not a function or class
Incorrect default import; the module is a named export.
fixUse import { DynamicQueryBuilderModule } from 'nestjs-rest-query'; Type 'FindOptionsOrder<Entity>' is not assignable to type 'FindOptionsOrder<Entity>'.
Incompatible TypeORM version; v0.3.26+ changed FindOptionsOrder shape.
fixUpdate TypeORM to ^0.3.26 and nestjs-rest-query to ^2.0.0.
Cannot use @UseQueryBuilder decorator on controller method without proper module registration.
Missing DynamicQueryBuilderModule.forRoot() in root module imports.
fixAdd DynamicQueryBuilderModule.forRoot({}) to the imports array of your root module (or a feature module). Query parameter 'filter[email][like]=acme' returned an empty result set even though matching records exist.
Case sensitivity or whitespace mismatch; ilike operator is needed for case-insensitive matching.
fixUse the 'ilike' operator instead of 'like' for case-insensitive filtering: ?filter[email][ilike]=acme
Audit
Dependencies
@nestjs/commonrequiredPeer dependency - NestJS decorators and module system
@nestjs/corerequiredPeer dependency - NestJS module lifecycle
reflect-metadatarequiredPeer dependency - TypeScript decorator metadata
typeormoptionalOptional peer - TypeORM adapter (default)
@nestjs/swaggeroptionalOptional peer - OpenAPI auto-documentation