表达req.params的可能性

时间:2014-06-19 14:53:53

标签: javascript json node.js express

我是一个相当noobish的程序员,并试图学习快递。

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

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 for express,所以我尝试使用req.params

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

这是我缺乏经验的地方咬我的屁股。我必须将req.params(' labreport')放到像reportName这样的变量中吗?

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

如果我删除调试器并单步执行我的app.get,如果我使用:labreport,则我的数组是未定义的。但在我之前的原始设置中,我的数组已正确定义!

我是以正确的方式解决这个问题还是在寻找别的东西?

2 个答案:

答案 0 :(得分:0)

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

global[req.params.labreport]

答案 1 :(得分:0)

想出来,

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

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

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