gpt4 book ai didi

javascript - POST 请求中缺少字段是否会引发错误?

转载 作者:行者123 更新时间:2023-12-03 05:58:19 25 4
gpt4 key购买 nike

我正在编写一条用于注册用户的路线。共有三个必填字段:姓名、电子邮件和密码。

我应该如何处理缺失的字段?

像这样吗?

function(req, res) {

if(!req.body.name || !req.body.email || !req.body.password) {

res.status(400).json({
"message": "All fields required"
});
return;

}
}

或者我应该抛出一个错误并将其传递给我的错误处理程序,如下所示:

function(req, res, next) {

if(!req.body.name || !req.body.email || !req.body.password) {

return next(new Error('All fields required'));

}
}

最佳答案

您可以使用中间件来确保您的端点获得应有的功能。试试Express Validator

包括:

 var expressValidator = require('express-validator')

然后

app.use(express.bodyParser());
app.use(expressValidator([])); // place after bodyParser

在您的端点,您可以检查正文、参数中的字段,也可以单独查询,例如

  req.checkBody('age', 'Invalid Age').notEmpty().isInt(); //required integer
req.checkBody('name', 'Invalid Name').notEmpty().isAlpha(); //required string
req.checkBody('name', 'Invalid Name').isAlpha(); // not required but should be string if exists

//for params use req.checkParams and for query req.checkQuery

var errors = req.validationErrors();
if (errors) {
res.send(errors).status(400);
return;
}

或者您可以在单独的文件中定义和使用架构。假设 validSchemas 目录中的 userSignUp.js

module.exports = {
'name': {
optional: true,
isLength: {
options: [{ min: 3, max: 15 }],
errorMessage: 'Must be between 3 and 15 chars long'
},
errorMessage: 'Invalid Name'
},
'email': {
notEmpty: true,
isEmail: {
errorMessage: 'Invalid Email'
}
},
'password': {
notEmpty: true,
errorMessage: 'Invalid Password' // Error message for the parameter
}
}

在验证时:

var userSignUpSchema = require('./validationSchemas/userSignUp.js);

req.checkBody(userSignUpSchema);
if (req.validationErrors()) {
res.send(errors).status(400);
return;
}

对于每个用例,您都可以添加另一个架构文件并验证字段

关于javascript - POST 请求中缺少字段是否会引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39838882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com