NodeJS - 如何破解功能?

f1n*_*1nn 2 javascript return callback break node.js

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

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 });
    });
});
Run Code Online (Sandbox Code Playgroud)

Node.JS告诉我所有休息都是非法的.但是我该怎样以正确的方式打破我的功能呢?它没有返回任何东西.谢谢!

I H*_*azy 12

一个return声明来暂停功能.

你可以提供一个可选的返回值,但在这种情况下,我相信它会被忽略,所以你应该只能替换break;return;.


旁注,但您有一些重复的代码,并且您的if条件中有分配.你通常可以考虑重复.此外,return如果您使用if/else if/else语句,您可以完全摆脱它.

这是一个例子.

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 });
        });
    }
});
Run Code Online (Sandbox Code Playgroud)