如何在express中使用apigee-access设置的变量?
我正在尝试使用这样的apigee-access获取变量:
http.createServer(function(req, resp) {
var userId= apigee.getVariable(req,username);
resp.end('Hello, World!\n'+userId+' Error:'+err);
});
并尝试在
中使用变量userIdapp.post('/employees', function(req, res) {
if (!req.is('json')) {
res.jsonp(400, {
error : 'Bad request'
});
return;
}
var b = req.body;
var e = {
'userName' : userId,
'displayName' : userId+"_details",
'phone' : b.phone
};
createEmployee(e, req, res);
});
我收到错误ReferenceError:“userId”未定义。同时执行相同的操作。有没有办法访问这个变量?
答案 0 :(得分:0)
您已将userId
定义为createServer
函数范围内的局部变量。在触发服务器回调并定义userId时,您的e
setter代码已经执行。
我想它可以在resp.end
中工作但是对吗?它将它写入页面?你需要设计一种更像“节点”的方式来处理userId,它不需要将userId存储为全局变量(这将非常糟糕),甚至根本不存储在代码中。我建议使用路径路径,并要求最终用户在POST时指定userId:
app.post('/employees/:userId', function(req, res) {
// req.params.userId can now be used
if (!req.is('json')) {
res.jsonp(400, {
error: 'Bad request'
});
return;
}
var body = {
userName: req.params.userId,
displayName: req.params.userId+"_details",
phone: req.body.phone
};
// now you're probably going to do something with 'body'
});