【问题标题】:Express req.params possibility表达 req.params 的可能性
【发布时间】:2014-06-19 14:53:52
【问题描述】:

我是一个相当菜鸟的程序员,正在努力学习 express。

我目前定义了一个全局数组

var labreport1 = [...]
var labreport2 = [...]

然后我运行一个函数来调用数据并将成功调用作为对象放入数组中,因此 labreport1[4] 就像一个 5000 对象 json 示例。

很喜欢

function getData (x) {...
writeRes(x, res);
return x[4]
...;}

function writeRes(x, z) {
    x[4] = z;
};

其中 z 是我的数据调用的响应。

然后我使用 express 发送该 json 对象。

所以

app.get('/labreport1', function(req, res) {
    getData(labreport1);
    res.header("Content-Type", "application/json; charset=utf-8");
    res.json(labreport1[4]);
});

这一切都很好而且花花公子,但编程规则是,如果我一遍又一遍地复制和粘贴相同的函数,除了更改一个一致的变量,我应该编写一个函数或其他东西吗?

但是现在,labreports 的数量正在增加很多,我不想为每个报告一遍又一遍地复制和粘贴 app.get,所以我尝试使用 req.params

app.get('/:labreport', function(req, res) {

这就是我缺乏经验的地方。我必须将 req.params('labreport') 放入像 reportName 这样的变量中,对吗?

如果我使用 req.params('labreport') 并以 labreport1 的方式访问页面,req.params 只会将 labreport1 作为字符串返回。因此,当我将 reportName 输入到进行调用并将数据放入数组的 getData 函数中时,它表示此时我的全局数组是未定义的,reportName 是一个“字符串”(所以它返回为“labreport1”而不是找到传递对象)

如果我删除一个调试器并单步执行我的应用程序。如果我使用 :labreport,我的数组是未定义的。但在我之前的原始设置中,我的数组定义正确!

我是按照正确的方式去做还是在寻找其他东西?

【问题讨论】:

    标签: javascript json node.js express


    【解决方案1】:

    如果它是全局的,那么你应该能够像这样得到数组:

    global[req.params.labreport]
    

    【讨论】:

    • global[req.params.labreport] 返回为未定义的 global["labreport1"]。我需要 global[labreport1] 对吗? req.params 将其作为字符串返回?编辑;是的,刚刚测试了它,只需在行 global[labreport1] 中输入我的数组,但 req.params.labreport 通过 /labreport1 访问它返回引号“labreport1”,它没有被识别为数组
    • i.imgur.com/FwBg7aw.jpg 它似乎不起作用? req.params.report 返回 "EMPLEPL" global["EMPLEPL"] 尽管发现为 EMPLEPL,但什么也没找到?
    【解决方案2】:

    想通了

    Node.js 有一种不同的方式来声明全局变量。我正在使用 var arr = new array();

    如果你只声明没有 var 的变量,你最终会得到一个附加到 global 的全局变量。

    可能是基本菜鸟的东西,但我不知道在节点中它是这样的!

    【讨论】:

      【解决方案3】:

      要获取URL的参数,可以req.params.labreport

      所以,你的功能是

      app.get('/:labreport', function(req, res) {
          getData(req.params.labreport);
          res.header("Content-Type", "application/json; charset=utf-8");
          res.json(req.params.labreport[4]);
      });
      

      您甚至可以通过将其声明为变量来缩短它:

      app.get('/:labreport', function(req, res) {
          var labreport = req.params.labreport
          getData(labreport);
          res.header("Content-Type", "application/json; charset=utf-8");
          res.json(labreport[4]);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-06
        • 1970-01-01
        • 2011-07-14
        相关资源
        最近更新 更多