首页 > 解决方案 > TypeError:无法读取未定义的属性“市场”(第 23 行)

问题描述

TypeError:无法读取未定义的属性“市场”(第 23 行)

我使用同一个数据库6个月没有接触任何东西,它从未失败过,今天开始出现这个错误,我试图找出故障,但在收集数据时我无法找到故障。

这是我收集值的基础(您可以通过单击链接访问数据图):
https ://webhooks.mongodb-stitch.com/api/client/v2.0/app/oddsbf-dvyne/服务/http/incoming_webhook/webhook0

这是我使用的脚本:

  const response = UrlFetchApp.fetch("https://webhooks.mongodb-stitch.com/api/client/v2.0/app/oddsbf-dvyne/service/http/incoming_webhook/webhook0");
  const mongo_matches = JSON.parse(response.getContentText());
  const matches = mongo_matches.map(function(match) {
    var over = '-'
    var under = '-'
    if(match['markets']['over_25'] !== undefined && 
       match['markets']['over_25']['over']['odds'] !== undefined && 
       (match['markets']['over_25']['over']['odds']['availableToBack'].length > 0 &&
         match['markets']['over_25']['under']['odds']['availableToBack'].length > 0 )){
      over = match['markets']['over_25']['over']['odds']['availableToBack'][0] !== undefined ? match['markets']['over_25']['over']['odds']['availableToBack'][0]['price']['$numberDouble'] : match['markets']['over_25']['over']['odds']['availableToLay'][0]['price']['$numberDouble']
      under = match['markets']['over_25']['under']['odds']['availableToBack'][0] !== undefined ? match['markets']['over_25']['under']['odds']['availableToBack'][0]['price']['$numberDouble'] : match['markets']['over_25']['under']['odds']['availableToLay'][0]['price']['$numberDouble']
    }
    return [
      match['markets']['marketStartTime'],
      match['markets']['lastSaved'],
      match['markets']['competition'],
      match['markets']['homeTeam']['runnerName'],
      match['markets']['awayTeam']['runnerName'],
      match['markets']['homeTeam']['odds']['availableToBack'][0] !== undefined ? match['markets']['homeTeam']['odds']['availableToBack'][0]['price']['$numberDouble'] : match['markets']['homeTeam']['odds']['availableToLay'][0]['price']['$numberDouble'],
        match['markets']['awayTeam']['odds']['availableToBack'][0] !== undefined ? match['markets']['awayTeam']['odds']['availableToBack'][0]['price']['$numberDouble'] : match['markets']['awayTeam']['odds']['availableToLay'][0]['price']['$numberDouble'],
          match['markets']['draw']['odds']['availableToBack'][0] !== undefined ? match['markets']['draw']['odds']['availableToBack'][0]['price']['$numberDouble'] : match['draw']['markets']['odds']['availableToLay'][0]['price']['$numberDouble'],
            under,
              over,
                ]; 
  });

给出错误的第 23 行是这个:

          match['markets']['draw']['odds']['availableToBack'][0] !== undefined ? match['markets']['draw']['odds']['availableToBack'][0]['price']['$numberDouble'] : match['draw']['markets']['odds']['availableToLay'][0]['price']['$numberDouble'],

标签: mongodbapigoogle-apps-script

解决方案


将第 23 行替换为:

match['markets']['draw']['odds']['availableToBack'][0] !== undefined ? match['markets']['draw']['odds']['availableToBack'][0]['price']['$numberDouble'] : match['markets']['draw']['odds']['availableToLay'][0]['price']['$numberDouble'],

更新:

Logger.log(mongo_matches['draw'])
Logger.log(mongo_matches['matches'])

两者都返回 null。这意味着您无法从空对象访问信息。


推荐阅读