我必须在这里遗漏一些东西。我无法正确覆盖变量。当我控制日志数据时,有一个返回的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
});
});
我相信我错过了什么,但不确定是什么。感谢
答案 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);