我是一个相当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,则我的数组是未定义的。但在我之前的原始设置中,我的数组已正确定义!
我是以正确的方式解决这个问题还是在寻找别的东西?
答案 0 :(得分:0)
如果它是全局的,那么你应该能够得到这样的数组:
global[req.params.labreport]
答案 1 :(得分:0)
想出来,
Node.js有一种不同的方式来声明全局变量。我使用的是var arr = new array();
如果你只是声明没有var的变量,你最终会得到一个附加到global的全局变量。
可能是基本的noob东西,但我不知道它在节点中是这样的!