使用apigee-access设置的变量如何在节点js中的express中使用?

时间:2016-01-03 12:36:33

标签: node.js express apigee

如何在express中使用apigee-access设置的变量?

我正在尝试使用这样的apigee-access获取变量:

 http.createServer(function(req, resp) {
  var userId= apigee.getVariable(req,username);   
  resp.end('Hello, World!\n'+userId+' Error:'+err);    
  });

并尝试在

中使用变量userId
app.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”未定义。同时执行相同的操作。有没有办法访问这个变量?

1 个答案:

答案 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'
});