# ajv-validate-middleware

> Ajv Express Validation Middleware

Latest version **1.0.3** (published 2023-01-30) · ISC license · 0 weekly downloads

## Install

```sh
npm install ajv-validate-middleware
pnpm add ajv-validate-middleware
yarn add ajv-validate-middleware
bun add ajv-validate-middleware
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2023-01-30 |
| First published | 2023-01-28 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 6.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | markthomas |

## Links

- npm: https://www.npmjs.com/package/ajv-validate-middleware
- npm.io page: https://npm.io/package/ajv-validate-middleware

## Dependencies (3)

- [ajv](https://npm.io/package/ajv.md) ^8.12.0
- [ajv-errors](https://npm.io/package/ajv-errors.md) ^3.0.0
- [ajv-formats](https://npm.io/package/ajv-formats.md) ^2.1.1

## Recent versions

- 1.0.3 (latest) — 2023-01-30
- 1.0.2 — 2023-01-29
- 1.0.1 — 2023-01-29
- 1.0.0 — 2023-01-28

## README

<a name="AjvValidateMiddleware"></a>

## AjvValidateMiddleware
Provides Ajv validation services to Express Routes

Usage:
```
const AjvValidateMiddleware = require("ajv-validate-middleware");

const validateMiddleware = new AjvValidateMiddleware();

const express = require('express');
const app = express();

validateMiddleware.createSchema({
    user: {
        type: "object",
        properties: {
            firstName: {
                type: "string",
            },
            lastName: {
                type: "string",
            },
            email: {
                type: "string",
                format: "email",
            },
        },
        required: ["firstName", "lastName", "email"],
        errorMessage: {
            type: "Should be an Object",
            required: {
                email: "Email is required",
                firstName: "firstName is required",
                lastName: "lastName is required",
            },
            properties: {
                email: "A valid email is required",
            },
        },
    },
});

app.use(express.json())

app.post('/', validateMiddleware.validate('body', 'user'))

app.use((error, req, res, next) => {
    res.status(400).send(error)
})

app.listen(3000, () => {
    console.log('Express is listening... Talk!')
})

```
**Kind**: global class  

* [AjvValidateMiddleware](#AjvValidateMiddleware)
    * [.validate](#AjvValidateMiddleware+validate) ⇒ <code>function</code>
    * [.createSchema(schema)](#AjvValidateMiddleware+createSchema)
    * [.addFormat(formatName, formatSchema)](#AjvValidateMiddleware+addFormat)

<a name="AjvValidateMiddleware+validate"></a>

### ajvValidateMiddleware.validate ⇒ <code>function</code>
Validate
Usage:

For query params:
router.post('/:userId', validate('params', 'mySchema'))

For json body:
router.post('/', validate('body', 'mySchema'))

Errors:
Validation errors are passed to next express handler

**Kind**: instance property of [<code>AjvValidateMiddleware</code>](#AjvValidateMiddleware)  
**Returns**: <code>function</code> - (req, res, next)  

| Param | Type |
| --- | --- |
| reqProperty | <code>String</code> | 
| schemaName | <code>String</code> | 

<a name="AjvValidateMiddleware+createSchema"></a>

### ajvValidateMiddleware.createSchema(schema)
Creates ajv function from schema and pushes to validators

**Kind**: instance method of [<code>AjvValidateMiddleware</code>](#AjvValidateMiddleware)  

| Param | Type |
| --- | --- |
| schema | <code>Object</code> | 

<a name="AjvValidateMiddleware+addFormat"></a>

### ajvValidateMiddleware.addFormat(formatName, formatSchema)
Adds a format to validator

**Kind**: instance method of [<code>AjvValidateMiddleware</code>](#AjvValidateMiddleware)  

| Param | Type |
| --- | --- |
| formatName | <code>String</code> | 
| formatSchema | <code>Object</code> |

---
_Source: https://npm.io/package/ajv-validate-middleware · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
