2014-10-11 54 views
0

我有一个文件名为helpers.js包含以下通在功能名称中req.params节点

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.js我包括

var express = require("express"), 
app = express(), 
ejs = require("ejs"), 
helpers = require("./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}); 
}); 

由于变量操作是一个字符串,所以I a m得到错误对象#没有方法“操作”。有什么办法将这个参数转换成函数吗?还是有更好的方法来尝试做到这一点?谢谢!

回答

1

您可以使用helpers[operation]访问函数,只要确保它是一个有效的函数名称,否则您将得到一个TypeError异常。

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