验证通过 multiparty 解析的 multipart-form 数据并通过 express-validator 验证
Validating multipart-form data parsed through multiparty and validation through express-validator
我正在发送多部分表单数据并将其保存在服务器上,但数据在未经任何验证的情况下被保存。为了解析数据,我使用 multiparty and express-validator 进行 post 数据验证,但我在没有任何验证的情况下保存数据。
要将此数据发送到我正在使用的服务器 postman.
我的服务器端代码如下
exports.signup = function(req, res) {
var form = new multiparty.Form();
// Validation checks
req.assert('first_name', 'first name is required').notEmpty(),
req.assert('last_name', 'last name is required').notEmpty();
req.assert('email', 'valid email is required').notEmpty().isEmail();
req.assert('password', 'password field is required').notEmpty().len(6, 10);
var errors = req.validationErrors();
if( !errors){
form.parse(req, function(err, body , files) {
////////
code to save the data on server goes here
});
}
else if (errors) {
return res.status(400).send({
'error': errors
});
}
};
目前,您正在尝试在解析正文字段之前对其进行验证,这是不可能的。
您必须在 form.parse()
回调中移动 req.assert()
和 req.validationErrors()
行。例如:
exports.signup = function(req, res) {
var form = new multiparty.Form();
form.parse(req, function(err, body, files) {
if (err)
return res.status(500).end();
req.body = body;
// Validation checks
req.assert('first_name', 'first name is required').notEmpty(),
req.assert('last_name', 'last name is required').notEmpty();
req.assert('email', 'valid email is required').notEmpty().isEmail();
req.assert('password', 'password field is required').notEmpty().len(6, 10);
var errors = req.validationErrors();
if (errors) {
res.status(400).send({
'error': errors
});
} else
res.status(200).end();
});
};
我正在发送多部分表单数据并将其保存在服务器上,但数据在未经任何验证的情况下被保存。为了解析数据,我使用 multiparty and express-validator 进行 post 数据验证,但我在没有任何验证的情况下保存数据。
要将此数据发送到我正在使用的服务器 postman.
我的服务器端代码如下
exports.signup = function(req, res) {
var form = new multiparty.Form();
// Validation checks
req.assert('first_name', 'first name is required').notEmpty(),
req.assert('last_name', 'last name is required').notEmpty();
req.assert('email', 'valid email is required').notEmpty().isEmail();
req.assert('password', 'password field is required').notEmpty().len(6, 10);
var errors = req.validationErrors();
if( !errors){
form.parse(req, function(err, body , files) {
////////
code to save the data on server goes here
});
}
else if (errors) {
return res.status(400).send({
'error': errors
});
}
};
目前,您正在尝试在解析正文字段之前对其进行验证,这是不可能的。
您必须在 form.parse()
回调中移动 req.assert()
和 req.validationErrors()
行。例如:
exports.signup = function(req, res) {
var form = new multiparty.Form();
form.parse(req, function(err, body, files) {
if (err)
return res.status(500).end();
req.body = body;
// Validation checks
req.assert('first_name', 'first name is required').notEmpty(),
req.assert('last_name', 'last name is required').notEmpty();
req.assert('email', 'valid email is required').notEmpty().isEmail();
req.assert('password', 'password field is required').notEmpty().len(6, 10);
var errors = req.validationErrors();
if (errors) {
res.status(400).send({
'error': errors
});
} else
res.status(200).end();
});
};