app.get('/profile/:id', function(req, res){
var options = { method: 'GET',
url: 'https://api.favoriot.com/v1/streams?max=1',
headers:
{ 'cache-control': 'no-cache',
'content-type': 'application/json',
'apikey': 'api key' } };
request(options, function (error, response, body) {
res.render('profile', {data:body});
console.log(body)
});
});
当我在上面运行代码时,我会得到以下数据:
{“ debugCode”:null,“ statusCode”:200,“ numFound”:1,“ results”:[{“ user_id”:“ xxx510”,“ stream_created_at”:“” 2019-03-05T16:13:01.982 Z“,” stream_developer_id“:” f8b8fcb9-6f3e-4138-8c6b-d0a7e8xxxxx @ xxxx510“,” device_developer_id“:” raspberryPIxx @ xxx510“,” data“:{” distance“:” 12.4“,” status“:” 1 “}}]}
如何使其仅显示状态?
答案 0 :(得分:0)
1)在此示例中,没有中间件...您只是在打电话获取一些数据。
2)status
在body.results[0].data.status
中可用,因此只需使用它而不是整个body
对象
答案 1 :(得分:0)
AFAIK这样的代码没有问题。您确定在主体的数据字段中获得了距离和状态,还是预期的输出?通过在其API playground上设置您的API密钥来尝试。我已经通过请求模块使用ES6标准重写了代码,或者您可以使用request-promise-native。
function requestPromisified(options) {
return new Promise(function(resolve, reject) {
request(options, function(error, res, body) {
if (!error && res.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
}
app.get("/profile/:id", async (req, res) => {
const options = {
method: "GET",
url: "https://api.favoriot.com/v1/streams?max=1",
headers: {
"cache-control": "no-cache",
"content-type": "application/json",
apikey: "api key"
}
};
try {
const body = await requestPromisified(options);
console.log(body);
res.render("profile", { data: body });
} catch (error) {
res.status(400).send('Unable to find a profile')
}
});