NodeJS分配变量不起作用

时间:2014-07-06 21:46:18

标签: javascript node.js express

我必须在这里遗漏一些东西。我无法正确覆盖变量。当我控制日志数据时,有一个返回的json对象。我想我不是在创建和/或将数据对象分配给变量。如果我控制台登录tcResponse我得到未定义。

router.get('/testcase/:id', function(req, res) {
    var tcResponse;
    var Client = require('node-rest-client').Client;
    var options_auth={
        user:"username",
        password:"password"
    };

    client = new Client(options_auth);

    args ={
        data:{test:"hello"}, // data passed to REST method (only useful in POST, PUT or PATCH methods)
        path:{
            "baseUrl":"http://local.dev/flex/services/rest/latest",
            "id":req.params.id
        }, // path substitution var
        parameters:{arg1:"hello",arg2:"world"}, // query parameter substitution vars
        headers:{"test-header":"client-api"} // request headers
    };

    client.get("${baseUrl}/testcase/${id}", args, function(data, response){
        // parsed response body as js object
        console.log(data);
        tcResponse = data;
        // raw response
        //console.log(response);
    });

    res.render('testcase', { 
        title: 'Zephyr Report - Test Case',
        testCaseId: req.params.id,
        tcResponseJson: tcResponse
    });
});

我相信我错过了什么,但不确定是什么。感谢

2 个答案:

答案 0 :(得分:2)

猜测,您是否尝试调用REST API然后返回结果数据?

在这种情况下,问题是您在调用get之前没有等待异步render回调。您需要将使用异步响应的代码移动到异步函数的回调中。

client.get("${baseUrl}/testcase/${id}", args, function(data, response) {
    res.render('testcase', { 
        title: 'Zephyr Report - Test Case',
        testCaseId: req.params.id,
        tcResponseJson: data
    });
});

答案 1 :(得分:0)

console.log(data);
tcResponse = data
// raw response
//console.log(response);

问题是您记录的响应确实没有定义。尝试记录tcResponse。

console.log(tcResponse);