2012-09-30 6 views
2

최근에 비슷한 질문이 있지만 여전히 해결할 수 없습니다. 새 사용자를 추가하기 전에 등록 페이지를 확인해야합니다.NodeJS - 함수를 중단하는 방법?

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를 모든 나누기 illegial 있음을 알려줍니다. 하지만 어떻게해야 적절한 방식으로 기능을 깰 수 있습니까? 아무것도 반환하지 않습니다. 감사!

답변

12

return 문은 함수를 정지시키는 데 사용됩니다.

선택적인 반환 값을 제공 할 수 있지만이 경우 무시됩니다. break;return;으로 바꿀 수 있어야합니다.


사이드 노트

,하지만 당신은 코드를 반복의 좋은 비트를 가지고 있고, 당신이 당신의 if 조건의 과제를 가지고있다. 보통 반복을 제외시킬 수 있습니다. 또한 if/else if/else 문을 사용하면 return을 모두 제거 할 수 있습니다.

다음은 예입니다.

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 }); 
     }); 
    } 
}); 

+0

당신은 반환 널 (null)와 같은 떨어지게을 의미? – f1nn

+0

@IlyaRusanen : 그냥 돌아 오라. "트릭을해야합니다. 명시 적 반환 값을 제공 할 필요는 없습니다. –

+0

감사합니다! – f1nn

관련 문제