'TypeError: req.checkBody is not a function
I'm trying to implement some validation in a sign up system, but I get the error:
TypeError: req.checkBody is not a function
from the following code:
module.exports = function(app, express) {
var express = require('express');
var api = express.Router();
// post users to database
api.post('/signup', function(req, res) {
var email = req.body.email;
var password = req.body.password;
var password2 = req.body.password2;
var key = req.body.key;
// Validation
req.checkBody('email', 'Email is required.').notEmpty();
req.checkBody('email', 'Email is not valid').isEmail();
req.checkBody('password', 'Password is required').notEmpty();
req.checkBody('password2', 'Passwords do not match').equals(req.body.password);
var errors = req.validationErrors();
if(errors) {
res.render('register', {
errors: errors
});
} else {
var user = new User({
email: email,
password: password
});
var token = createToken(user);
}
// save to database
user.save(function(err) {
if (err) {
res.send(err);
return;
}
res.json({
success: true,
message: 'User has been created',
token: token
});
});
});
I've checked and it's getting the info from the front end, and I've had almost the same code work in another app (where is wasn't wrapped in module.exports = function(app, express) { }
Solution 1:[1]
I encountered the same problem, I found out that the problem was from the current version of express_validator. I had to degrade to "express-validator": "5.3.1", and it worked for me. I think the need to fix the issue.
Solution 2:[2]
With express-validator 6 you will have to do the following:
import
var router = express.Router();
var { body, validationResult} = require('express-validator');
validation
body('username').isEmail()
body('password').isLength({ min: 5 })
errors
const errors = validationResult(req);
Solution 3:[3]
Same as in the above answer, after installing express-validator, adding
server.use(expressValidator());
under
const express=require("express");
and
const server=express();
solved my problem.
Solution 4:[4]
just change :
noEmpty()
to
isLength({min:1})
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Amadi Chukwuemeka Austin |
| Solution 2 | Sandip Subedi |
| Solution 3 | dilanSachi |
| Solution 4 | Mounir bkr |
