我有一个名为helpers.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.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});
});
由于变量操作是一个字符串,我收到错误Object#没有方法'operation'。有没有办法将此参数转换为函数?或者有更好的方法来尝试这样做吗?谢谢!
答案 0 :(得分:1)
您可以使用helpers[operation]
访问该功能,只需确保它首先是有效的功能名称,否则您将获得TypeError
例外。
var result = helpers[operation](a, b);