2012-12-17 4 views
0

노드 js/Express를 사용하여 크기가 큰 큰 프로그램을 작성하고 있습니다.노드 js 함수 호출

저는 여러 개의 app.post 기능이 있습니다. 그래서 대부분의 사용자는 요청에 대한 유효성 검사를 수행하고 응답을 보내야합니다.

그래서 저는 Validate()라는 함수를 만들었습니다. 유효성 검사가 실패하면 "유효하지 않은 정보로 다시 시도하십시오."라는 메시지를 보낼 것입니다.

그래서, 나는 그래서 지금 문제가되지이다 그래서에 액세스 할 수 있습니다 제가 DB에 쓰고 REQ의

app.post('/',function(req,res){ 
... 

validate(); 
} 

모든 필요한 매개 변수에

function validate() { ...} 

를 만들었습니다. 문제는 "res"개체를 보내는 방법입니다. res를 호출하려고하면 유효성 검사에 지금 작성하십시오. 그것은 그것이 정의되지 않는다고 불평 할 것이다.

어떻게 해결할 수 있습니까?

2) DB에 validate()의 응답을 쓰려고했습니다. 그 후에 I는 입술 호출하려고 :은이 기능 검증 응답이 입술에 의해 사용되지 asyc 노드

app.post('/',function(req,res){ 
... 

validate(); 

res .. 
} 

가있다. ,

function validate(req, res) { 
    // ... 
} 
app.post('/', function (req, res) { 
    validate(req, res); 

    // ... 
}); 

당신은 또한 next, 제 3 인수를 호출, 사용자 정의 미들웨어로 정의 할 수 있습니다 :

당신은 인자로 전달한다

답변

4

이 같은 문제를 건너 하나를 가지고 요청이 유효한 것으로 간주되면 app.post as another callback :

function validate(req, res, next) { 
    var isValid = ...; 

    if (isValid) { 
     next(); 
    } else { 
     res.send("please try again"); 
    } 
} 
Express에서의

Error handlingnext(err)과 함께 유용 할 수 있습니다.

+0

고마워요. 조나단. 또한 함수 선언에서 데이터 유형을 언급합니다. 우리는 여기서 데이터 유형을 언급 할 필요가 없다. –

+1

@ TheLearner Nope. JavaScript 변수는 동적 변수이므로 https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Functions에 이름을 지정하면됩니다. 그러나 TypeScript와 같은 다른 ECMAScript 변형을 사용하는 경우 유형을 지정해야 할 수도 있습니다. –

+0

감사합니다. 분명합니다. –