2016-12-26 39 views
0

我突然遇到了一段意外的问题,这段代码在数周内一直在正常工作。NodeJS无法读取存在的JSON属性?

在下面的请求和(部分)响应:

//request 
let campaignRes = request('POST', reqUrl, campaignOptions); 

//body of response 
{"type":"Buffer","data":[ //some integer values ]} 

您可以看到“数据”领域明显存在,而且我已经能够访问在以下方面持续数周现在:

console.log(JSON.stringify(campaignRes.body)); 
let campaignData = JSON.parse(campaignRes.getBody('utf8')).body.data; 

然而,这现在产生错误:

TypeError: Cannot read property 'data' of undefined 
at Object.MongoClient.connect.MongoClient.connect [as generateReport] (/mtpath/reports.js:31:68) 
at Object.<anonymous> (/mypath/test.js:7:22) 
at Module._compile (module.js:413:34) 
at Object.Module._extensions..js (module.js:422:10) 
at Module.load (module.js:357:32) 
at Function.Module._load (module.js:314:12) 
at Function.Module.runMain (module.js:447:10) 
at startup (node.js:146:18) 
at node.js:404:3 

我也有点在为什么现在发生此错误而不是早期失败。

任何帮助将不胜感激。谢谢!

UPDATE:

let campaignData = campaignRes.body.data; 

并没有表现任何好转。

+1

向我们展示'campaignRes.getBody('utf8')'的值。你为什么认为结果包含“body”?另外,你应该总是检查'JSON.parse'返回的值。试试这个:var parsedJson = JSON.parse(campaignRes.getBody('utf8')); console.log(parsedJson?parsedJson.data:'(failed to parse JSON)');' –

+0

谢谢!你完全正确,之前和现在的区别在于没有'body',因为现在有一个错误! 似乎有人可能已更改此帐户上的密码。 – Nodal

回答

0

正如上面俄罗斯人奥斯马诺夫间接确定的那样,问题仅仅是这个回答没有body。在之前的作品中正确工作的原因是当时有body,但现在不再是(由于某些凭证被更改,现在我对此请求收到错误响应)。

谢谢!

相关问题