我试图在注册系统中实施一些验证,但我收到错误:
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
});
});
});
我已经检查了它并且它从前端获取了信息,并且我在另一个应用程序中有几乎相同的代码工作(其中没有包含在模块中。 exports = function(app,express){}
答案 0 :(得分:13)
您需要使用以下命令
安装express-validator
npm install express-validator
然后添加
var expressValidator = require('express-validator');
api.use(expressValidator())
后立即
var api = express.Router();
有关详细信息,请参阅TypeError: req.checkBody is not a function including bodyparser and expressvalidator module
答案 1 :(得分:1)
我遇到了同样的问题,我发现问题出在当前版本的express_validator。我不得不降级为“ express-validator”:“ 5.3.1”,它对我有用。 我认为有必要解决该问题。
答案 2 :(得分:0)
与上述答案相同,安装express-validator后,添加
server.use(expressValidator());
下
const express=require("express");
和
const server=express();
解决了我的问题。
答案 3 :(得分:0)
使用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);