@wiicamp/graphql-validation
v2.2.3
Published
An GraphQL middleware for validator.js.
Downloads
1
Maintainers
Readme
@wiicamp/graphql-validation
@wiicamp/graphql-validation
is a GraphQL middleware that wraps validator.js validator functions.
Table of Contents
Features
- Based on validator.js
- Validate both args & input types
- Easy to use
- Easy to modularizing
- Pure javascript
Install
yarn add @wiicamp/graphql-validation
or
npm i --save @wiicamp/graphql-validation
Usage
Basic
const { validator, validate } = require('@wiicamp/graphql-validation'); // Import module
const resolver = {
Mutation: {
createPost: validator([ // <--- Validate start here
validate('id').isMongoId(),
validate('title') // <--- Validate title
.isLength({ msg: 'Title is invalid' options: { min: 3, max: 20 } })
.contains({ msg: 'Title must contains "hi"', options: 'hi' })
.not().isEmpty({ msg: 'Title is required' }),
validate('content') // <--- Validate content
.isLength({ options: { min: 10, max: 20 } }),
], (parent, args, context, info) => {
if (context.validationErrors) {
// Validate failed
console.log(context.validationErrors); // Do anything with this errors
return;
}
// Validate successfully, time to create new post
}),
},
};
Input: { id: 'hellomongo', title: '', content: 'Hi!' };
// console.log(context.validationErrors);
Output: [
{
param: 'id',
msg: 'MongoId is invalid',
},
{
param: 'title',
msg: 'Title is invalid',
},
{
param: 'title',
msg: 'Title must contains \"hi\"',
},
{
param: 'title',
msg: 'Title is required',
},
{
param: 'content',
msg: 'Invalid value',
}
];
Validate Input types
const { validator, validate } = require('@wiicamp/graphql-validation'); // Import module
const resolver = {
Mutation: {
createPost: validator([
validate('title', 'data') // <--- Validate input types
.not().isEmpty({ msg: 'Title is required' }),
validate('content') // <--- Just validate args
.isLength({ options: { min: 10, max: 20 } }),
], (parent, args, context, info) => {
if (context.validationErrors) {
// Validate failed
console.log(context.validationErrors); // Do anything with this errors
return;
}
// Validate successfully, time to create new post
}),
},
};
Input: { data: { title: '' }, content: 'Hi!' };
// console.log(context.validationErrors);
Output: [
{ param: 'title', msg: 'Title is required' },
{ param: 'content', msg: 'Invalid value' },
];
To get started with
@wiicamp/graphql-validation
, you can refer to this example.
API
validator(rules: array, controller: function)
| Args | Type | Default | Description |
| --------------------------- | --------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| rules
| Array
| undefined
| List of validation's rules. Required. |
| controller
| Function
| undefined
| Controller of mutation's field. Required. |
validate(param: string, input: string)
| Args | Type | Default | Description |
| --------------------------- | --------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| param
| String
| undefined
| Name of param. Required. |
| input
| String
| undefined
| Name of input. Options. |
Validator functions
| Args | Type | Default | Description |
| --------------------------- | --------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| config
| Object { msg: string, options: any }
| { msg: 'Invalid value' }
| msg
: Custom error message, options
: options of validator functions.
Contribution
Contribution are always welcome and recommended! Here is how:
- Fork the repository (here is the guide).
- Clone to your machine
git clone https://github.com/YOUR_USERNAME/graphql-validation.git
- Make your changes
- Create a pull request
License
@wiicamp/graphql-validation
is released under the MIT license. See LICENSE for details.
Any question or support will welcome.