NodeJS - 如何打破一个功能? [英] NodeJS - how to break a function?
问题描述
最近有一个类似的问题,但仍然无法得到它.在添加新用户之前,我必须验证注册页面.
Recently had a similar question, but still can't get it. I have to validate registration page before adding new user.
app.post('/signup', function(req, res) {
//checking if first name is filled
if (req.body.first_name = "" || req.body.first_name = null || req.body.first_name = undefined) {
res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "error" : "empty_first_name" });
break;
}
//checking if last name is filled
if (req.body.last_name = "" || req.body.last_name = null || req.body.last_name = undefined) {
res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "error" : "empty_last_name" });
break;
}
//checking if email is filled
if (req.body.email = "" || req.body.email = null || req.body.email = undefined) {
res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "error" : "empty_email" });
break;
}
//checking if passwords match
if (req.body.password != req.body.repassword) {
res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "error" : "pass_missmatch" });
break;
}
...
...
...
//and finally if everything seems to be OK...
addUser(req.body.email, req.body.password, req.body.first_name, req.body.last_name, req.body.country, function(status) {
res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "success" : 1 });
});
});
Node.JS 告诉我所有的中断都是非法的.但是我应该如何以适当的方式打破我的功能?它不返回任何东西.谢谢!
Node.JS tells me that all the breaks are illegial. But how should I break my function in a proper way? It doesn't return anything. Thanks!
推荐答案
return
语句用于停止函数.
你可以提供一个可选的返回值,但在这种情况下,我相信它会被忽略,所以你应该能够用 return;
替换 break;
.
You can provide an optional return value, but in this case, I believe it would be ignored, so you should just be able to replace break;
with return;
.
旁注,但您有很多重复代码,并且您在 if
条件中有赋值.您通常可以将重复因素考虑在内.此外,如果您使用 if/else if/else
语句,您可以完全摆脱 return
.
Side note, but you have a good bit of repeating code, and you have assignments in your if
conditions. You can usually factor away the repetition. Also, you can get rid of the return
altogether if you use if/else if/else
statements.
这是一个例子.
function isEmpty(val) {
return val === "" || val == null;
}
function renderWithError(req, res, msg) {
res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "error" : msg });
}
app.post('/signup', function(req, res) {
if (isEmpty(req.body.first_name)) {
renderWithError(req, res, "empty_first_name");
}
else if (isEmpty(req.body.last_name)) {
renderWithError(req, res, "empty_last_name");
}
else if (isEmpty(req.body.email)) {
renderWithError(req, res, "empty_email");
}
else if (req.body.password != req.body.repassword) {
renderWithError(req, res, "pass_missmatch");
}
...
...
...
else {
addUser(req.body.email, req.body.password, req.body.first_name, req.body.last_name, req.body.country, function(status) {
res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "success" : 1 });
});
}
});
这篇关于NodeJS - 如何打破一个功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!