Express validator is one of the many npm packages for validating a request an express application.
I recently used express validator in a project ...
For further actions, you may consider blocking this person and/or reporting abuse
Very useful thanks!
For my purpose I just split validators.js in 2 parts, your validate const is for me a separate middleware in which I've also added a
useful to me to access to validated data in next middleware.
My validateRules middleware looks like:
hi Alain
This line not working for me. I don't know why.
But the following code is work for me.
That was insightful. Thanks for sharing!
Hey Chinedu,
I echo sentiment of others regarding the endless search for finding a tutorial that made sense and was easy to implement! Thank you! Would I check for duplicates in the database in this file as well?
PS: I found this:
express-validator.github.io/docs/c...
how would we incorporate it into what we have?
I'm sure your slammed with requests like this - no worries if you don't have the bandwidth to reply
hey Chinedu - kept searching and found my answer! I am fired up - see below if anyone else is interested:
const { body, check, validationResult } = require('express-validator')
const Team = require('../models/Team')
const teamValidationRules = () => {
return [
// is name present
check('name'," a string 'name' is required.")
.notEmpty().isString()
.custom(
async (value, {req}) => {
const check = await Team.findOne({name: value})
Great job, I just saw your comment, good to know you've been able to tackle it
Hi Chinedu,
Thank you for the solution, looks great and works great.
I am using PHPStorm/WebStorm and when I implemented this solution, the editor shows warning (yellow underline):
Argument types do not match parameters
I thought I was using correctly the pattern of adding middleware to my routes, did I do something wrong?
Great solution, thanks!
Hi Chinedu,
I was looking exactly this way,
I want to know how the below line works
"app.post('/user', userValidationRules(), validate, (req, res) => {"
How userValidationRules() related to validate,
Thanks
Syed
Hi Syed, the
userValidationRules()
is a helper which uses the express-validator methods to intercept the request and enforce the validation, express-validator methods pass the results of the validations to the request, the validate is a middleware which checks if the request contains errors injected by the express-validator methods; as middlewares do, if there's an error in the request object, it returns the error response, if there's no error in the request object, it calls thenext
function allowing the request to continue to the next stage.Hi thanks for the reply
I'm sorry, I'm still in learning the middleware. You said userValidationRules() is helper, but not a middleware, since because of the braces ()?, how these two (userValidationRules() and valiadate) differ from each other in that place.
My understanding is, the helper userValidationRules(), executed immediately, and send the errors ,if any, to validate middleware 'validate'?.
If i want to combine those two into one single middleware, how can I achieve that?
Thanks
Syed
I found a more simplistic approach of doing this on Stackoverflow.
Nice post. Was struggling with this for a while until I saw your post.. Thank Omo Naija
Haha, the Omo Naija part. Good to know you found it helpful ✌️
Great post! However I have a question. Can this be merged in a single middleware? Instead of two functions?
Certainly yes, I've recently made an improvement to it in my personal codes. The validator takes schema as a param. I found it cleaner and I'd update the article ASAP. Below is what it looks like:
How would you implement mutually exclusive properties like google maps geocoding?
can be either: address or latlng but not both
github.com/express-validator/expre...
seems oneOf is middleware not a ValidationChain[]. I'm handling it manually using a custom rule because that allows me to continue using similar "validate" middleware, although, what else are we missing by having this convenience "validate" wrapper .
Great writeup!
This is just awesome! Thank you so much!
Anytime!
My error value just "Invalid value", not described as example :
{
"errors": [
{
"username": "username must be an email"
},
{
"password": "password must be at least 5 chars long"
},
]
}
that is from validator library or from backend?
If you didn't specify a custom error message, then it'll assume the default message from the library
Ok i got it, express-validator.github.io/docs/c... thanks
Hi Mohammad, If I got your question clearly it means you're using server side rendering. The example above would serve well for an API where all responses are JSON objects. In your case, you return a view instead of a JSON object. So what you should do is to return a view then passing the error object as a data to the view.
In this function if we want to support multiple validation rules and make a condition based on one key in the request body, do you have any ideas? In the other hand how we can pass req in this function?
Thank you Chinedu. Just what I was looking for. Very elegant. However, this is just for one API handle. What if there are multiple request handles and each of them with multiple parameters?
Should I create a separate layer for validations for a real-world application??
Love this approach to validation but wondering how I would compare the value of one field to another with it? For example password and confirmpassword. Any help would be appreciated.
You can use a custom rule
See example from the docs:
Thank you, it worked beautifully. I'm guessing you can use a similar approach to checking for 'unique' emails/usernames by requiring the model in the validator class, using the value to search for existing emails/usernames in the database and if one is returned, to throw an error?
yes
Really appreciate this one. Was already trying to do something like this. Thanks for saving me some valuable time
Glad you found it helpful
Simple and clear explanation. Thanks, this is what I'm looking for :)
Very useful info. Was trying to upgrade from the previous version of express-validator. Thanks
Thank you! This article is very useful !
Thanks Chinedu
Thank you so much! There are so many articles which are misleading.
Hell,Thanks For Shairng !
I want to just to know if someone use the validator.js library
Thanks for sharing! Very useful.
Yeah. That's pretty much it. Good job!
VERY USEFUL! THANK YOU!
Hello,
Just one question, How do you validate FormData non-file and file fields together?
Awesome article. I have recently used this implementation in my clone application with slight tweeks.
Thanks for the share! Cheers 🥂
thank you!
userValidationRules() why do we need to use parentheses to call this function in the route. since this is a callback right ?
Hi Chinedu,
Was looking for a way to make a custom middleware for this validator and this solved my problem brilliantly!
Awesome work