NodeJS - 如何打破一个功能? [英] NodeJS - how to break a function?

查看:52
本文介绍了NodeJS - 如何打破一个功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近有一个类似的问题,但仍然无法得到它.在添加新用户之前,我必须验证注册页面.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆