TypeError: req.checkBody не является функцией
Я пытаюсь реализовать проверку в системе регистрации, но получаю сообщение об ошибке:
TypeError: req.checkBody is not a function
из следующего кода:
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
});
});
});
Я проверил, и он получает информацию из внешнего интерфейса, и у меня была почти такая же работа с кодом в другом приложении (где он не был включен в module.exports = function(app, express) { }
5 ответов
Вам необходимо установить express-validator
используя команду ниже
npm install express-validator
затем добавьте
var expressValidator = require('express-validator');
api.use(expressValidator())
незамедлительно после
var api = express.Router();
Смотрите TypeError: req.checkBody не является функцией, включающей в себя bodyparser и модуль expressvalidator для получения более подробной информации.
С участием
express-validator
6 вам нужно будет сделать следующее:
импорт
var router = express.Router();
var { body, validationResult} = require('express-validator');
Проверка
body('username').isEmail()
body('password').isLength({ min: 5 })
ошибки
const errors = validationResult(req);
Я столкнулся с той же проблемой, я обнаружил, что проблема была в текущей версии express_validator. Мне пришлось перейти на "экспресс-валидатор": "5.3.1", и у меня это сработало. Думаю, нужно исправить проблему.
То же, что и в ответе выше, после установки экспресс-валидатора, добавив
server.use(expressValidator());
под
const express=require("express");
а также
const server=express();
решил мою проблему.