而不是
https.request尝试使用
request。
它将为您提供解析的JSON,而您无需手动进行。
如果您希望像手动操作那样手动操作,请记住将其包装
var json = JSON.parse(resultBody);在try /
catch块中(或使用
tryjson),因为
JSON.parse不能在try
/ catch之外的未知数据上使用-可能引发异常。
另外,不要在路由处理程序中打开数据库连接。您应该打开一次连接,然后在处理程序中使用它。。
现在要连接到数据库,但你继续连接回调外,让您从开始的所有行
var json = JSON.parse(resultBody);之前
建立的数据库连接。
此外,错误可能不是因为
json未定义而是因为
json.place未定义。
您可以更改此:
var eventPlace = json.place.name;
对此:
var eventPlace = json.place && json.place.name;
您还必须
json.photos在访问之前检查
json.photos.data并测试是否
json.photos.data为数组,然后再将其视为此类(可以使用以下方法进行处理:
if (json.photos && Array.isArray(json.photos.data)) { // ...}基本上,您需要在访问它们之前确保值是您想要的值。例如访问此:
json.photos.data[json.photos.data.length-1].images[0].source
当
json未定义,何时
json.photos未定义,何时
json.photos.data未定义,何时
json.photos.data不是数组,何时
json.photos.data.length为零,何时
json.photos.data[json.photos.data.length-1]未定义,何时
json.photos.data[json.photos.data.length-1].images未定义,何时
json.photos.data[json.photos.data.length-1].images不是数组,何时
json.photos.data[json.photos.data.length-1].images为数组但为空或何时
json.photos.data[json.photos.data.length-1].images为a
时,可能失败非空数组,但
json.photos.data[json.photos.data.length-1].images[0].source未定义。
如您所见,这里有很多假设。如果不满足这些假设,则代码将失败。



