【问题标题】:Pass in name of function in req.params node [duplicate]在 req.params 节点中传入函数名称[重复]
【发布时间】:2014-12-06 17:32:01
【问题描述】:

我有一个名为 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 # has no method 'operation'。有没有办法将此参数转换为函数?还是有更好的方法来尝试做到这一点?谢谢!

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      相关资源
      最近更新 更多