请求承诺 returns 未定义但存在

request-promise returns undefined but exists

正在尝试通过请求承诺执行请求,但无法正常工作。

查看下面的评论。

有人可以给我解释一下这个 PiA 吗?

提前致谢

var todayOptions = { uri: `http://mlb.mlb.com/gdcross/components/game/mlb/year_${year}/month_${month}/day_${day}/master_scoreboard.json`, 
                     simple: false, 
                     resolveWithFullResponse: true
};

rp(todayOptions)
  .then(function (response){
    console.log(response.body); //RETURNS BODY
    console.log(response.body.data); //RETURNS UNDEFINED EVEN THOUGH IT EXISTS
 })
  .catch(function(error){
    console.log(error);
  });

我敢打赌 response.body 是一个字符串化的 JSON 对象。尝试解析它。请求承诺 returns 有时是字符串化对象。

console.log(JSON.parse(response.body).data);

您需要将 json 选项设置为 true:

var todayOptions = { uri: `http://mlb.mlb.com/gdcross/components/game/mlb/year_${year}/month_${month}/day_${day}/master_scoreboard.json`, 
                     simple: false, 
                     resolveWithFullResponse: true,
                     json: true
};

如果这对您仍然不起作用,因为它对我不起作用,请尝试将其添加到您的选项中:

编码:'utf8'

这为我解决了所有问题。您甚至不必搞乱 json.parse 或 json.stringify 复利。如果您的选项中已有 json: true,则响应已经是一个 json 对象。