1.0.4 • Published 2 years ago

nestjs-ajv-glue v1.0.4

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

nestjs-ajv-glue

This project contains glue code for connecting nestjs pipe validation with AJV

Installation

$ npm i --save nestjs-ajv-glue

Usage

Setup validation pipe

import { NestFactory } from '@nestjs/core'
import { AjvValidationPipe } from 'nestjs-ajv-glue'

async function bootstrap() {
    const app = await NestFactory.create(AppModule)

    app.useGlobalPipes(new AjvValidationPipe())

    await app.listen(port)
}

Create AJV schema

const schema: JSONSchemaType<Foo> = {
    type:                 'object',
    additionalProperties: false,

    properties: {
        bar: {
            type:      'string',
            minLength: 1,
            maxLength: 3,
        },
    },

    required: ['bar'],
}

Decorate handler params with schema

import { AjvBody, AjvQuery, AjvParams } from 'nestjs-ajv-glue'

@Controller('/foo')
class FooController {

  @Get()
  filter(@AjvQuery(schema) query: FilterFooRequest): FilterFooRequest {
    return query
  }

  @Post()
  create(@AjvBody(schema) body: CreateFooRequest): string {
    return 'ok'
  }

  @Delete(':id')
  delete(@AjvParams(schema) params: DeleteFooRequest): string {
    return 'ok'
  }
}

Decorators

The following decorators are available:

  • @AjvBody for validating request body
  • @AjvParams for validating request params
  • @AjvQuery for validating request query

Contributing

Feel free to submit issues and enhancement requests.

License

MIT