패스

2014-10-11 2 views
0

나는이 포함 된 파일이라고 helpers.js 가지고 내가패스

var express = require("express"), 
app = express(), 
ejs = require("ejs"), 
helpers = require("./helpers"); 

을 포함하고 있고 노력하고 내 app.js에서

var helpers = { 
    add: function(a,b){ 
    return a+b; 
    }, 
    sub: function(a,b){ 
    return a-b; 
    }, 
    mult: function(a,b){ 
    return a*b; 
    }, 
    div: function(a,b){ 
    return a/b; 
    }, 
    math: function(a,b,callback){ 
    return callback(a,b); 
    } 
}; 

module.exports = helpers; 

다음 여기에이 코드를 사용하여 함수의 이름으로 매개 변수로 사용자를 전달하게하려면 :

app.get('/number/:num1/:num2/:operation', function(req,res){ 

    var a = parseInt(req.params.num1); 
    var b = parseInt(req.params.num2); 
    var operation = req.params.operation; 
    var result = helpers.operation(a,b); 


    res.render('math', {result: result}); 
}); 

가변 연산은 문자열이므로, m 오류를 얻는 중 Object #에 'operation'메서드가 없습니다. 이 매개 변수를 함수로 변환 할 수있는 방법이 있습니까? 아니면 이것을 시도하는 더 좋은 방법이 있습니까? 감사!

답변

1

helpers[operation]으로 함수에 액세스 할 수 있습니다. 유효한 함수 이름이 먼저 있는지 확인하십시오. 그렇지 않으면 TypeError 예외가 발생합니다.

var result = helpers[operation](a, b);