request-promise返回undefined但存在

时间:2017-04-26 15:42:25

标签: javascript node.js request httprequest request-promise

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

请参阅下面的评论。

有人可以向我解释这个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);
  });

3 个答案:

答案 0 :(得分:3)

我的赌注是<div id="container"> <header id="title"> <h1>Lorem Ipsum</h1> </header> <div class="a"> <ul class="projectList"> <li class="projectImage"><a href="#">Project<span><img class="image1" src="" alt="" height="" /></span></a></li> <li><a href="#">Project<span><img src="" alt="" height="" /></span></a></li> <li><a href="#">Project<span><img src="" alt="" height="" /></span></a></li> <li><a href="#">Project<span><img src="" alt="" height="" /></span></a></li> <li><a href="#">Project<span><img src="" alt="" height="" /></span></a></li> <li><a href="#">Project<span><img src="" alt="" height="" /></span></a></li> <li><a href="#">Project<span><img src="" alt="" height="" /></span></a></li> </ul> </div> <div class="b"> <h2>lorem ipsum</h2> <p>Lorem ipsum dolor sit amet, suspendisse nam habitasse pellentesque arcu quae dignissim, amet magna diam aenean. Amet ipsum aenean, massa posuere maecenas nam lectus nibh lacus, nisl lacus magna nullam leo quis. Mi elit ante nunc, mi odio congue rhoncus dui quis dictum, lectus eleifend aliquam sed venenatis vitae lorem, potenti non dictum sit. Condimentum nonummy vitae tristique, pede nullam pretium arcu vestibulum dictum, urna erat aliquam duis sit pede nam. Morbi mauris fermentum luctus morbi nec eget, vitae fermentum et maecenas, primis ullamcorper mauris et diam nunc, turpis massa sit felis nullam.</p> <p>Interdum morbi pellentesque. Et semper diam vestibulum, nisl est, porttitor mauris tellus hac, ut dictum massa. Elementum malesuada curabitur non euismod arcu, sit justo suspendisse aliquam purus suspendisse. Felis est leo, quis turpis ornare quis tellus, fusce neque ut vitae justo penatibus molestie, per labore suscipit corrupti, non sed in id amet velit. Tempor rutrum tristique anim orci massa, arcu dolor eros dictum arcu.</p> </div> </div>是一个字符串化的JSON对象。尝试解析它。 request-promise有时返回一个字符串化的对象。

response.body

答案 1 :(得分:3)

您需要将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
};

答案 2 :(得分:0)

如果这仍然不适合您(对我而言),请尝试将其添加到您的选项中:

编码:“ utf8”

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