Javascript .ejs文件将显示API JSON中的一些信息,但不是全部信息

Javascript .ejs文件将显示API JSON中的一些信息,但不是全部信息,javascript,json,node.js,express,ejs,Javascript,Json,Node.js,Express,Ejs,因此,我试图让我的.ejs文件显示来自API代码的更多信息,但它一直给我一个错误代码 TypeError: /home/ubuntu/workspace/sportsapp/views/results.ejs:7 5| <li><%= game["home"]["name"]%> Vs.<%=game["away"]["name"]%> 6| <ul> >> 7| &l

因此,我试图让我的.ejs文件显示来自API代码的更多信息,但它一直给我一个错误代码

TypeError: /home/ubuntu/workspace/sportsapp/views/results.ejs:7
   5|         <li><%= game["home"]["name"]%> Vs.<%=game["away"]["name"]%>
   6|         <ul>
>> 7|             <li><%= game["broadcast"]["network"]%></li>
   8|         </ul>
   9|         </li>
   10|     </ul>

Cannot read property 'network' of undefined
这是我的ejs文件

<% data["games"].forEach(function(game){ %>
    <ul>
        <li><%= game["home"]["name"]%> Vs.<%=game["away"]["name"]%>
        <ul>
            <li><%= game["broadcast"]["network"]%></li>
        </ul>
        </li>
    </ul>
<% }); %>

我有一种感觉,我在ejs文件的循环部分做了一些错误,但我不确定我到底在哪里搞砸了。任何帮助都将不胜感激

记录你的游戏[“广播”]值,你确定此数组中的所有游戏都具有game.broadcast.network属性吗?@Kotel_uu当我控制台记录它时,它给了我以下类型错误:无法读取未定义的属性“broadcast”,所以我假设不是每个数组都具有该值,我该如何让它显示那些确实具有该值的值,如果没有,则只显示一个空白?我认为@Kotel_uu就在这里。。。。虽然您显示的JSON条目确实有一个
broadcast
键,但很可能有一个条目没有,并且导致了您看到的错误。您应该先检查它是否存在,然后再尝试访问它。@mscdex是的,他是正确的,所以现在我想知道如何访问那些确实存在的文件而不出现错误。或者我如何用“不存在”或类似的东西来替换那些不存在的?我应该做一个循环吗?@brando您可以使用if语句并仅在属性存在时打印:
  • 记录您的游戏[“广播”]值,你确定这个数组中的所有游戏都有game.broadcast.network属性吗?@Kotel_uu当我记录它时,它给了我这个类型的错误:无法读取未定义的属性'broadcast',所以我假设不是每个数组都有这个值,我该如何让它显示那些确实具有该值的值,如果没有,则只显示一个空白?我认为@Kotel_uu就在这里。。。。虽然您显示的JSON条目确实有一个
    broadcast
    键,但很可能有一个条目没有,并且导致了您看到的错误。您应该先检查它是否存在,然后再尝试访问它。@mscdex是的,他是正确的,所以现在我想知道如何访问那些确实存在的文件而不出现错误。或者我如何用“不存在”或类似的东西来替换那些不存在的?我应该做一个循环吗?@brandou您可以使用if语句并仅在属性存在时打印:
  • <% data["games"].forEach(function(game){ %>
        <ul>
            <li><%= game["home"]["name"]%> Vs.<%=game["away"]["name"]%>
            <ul>
                <li><%= game["broadcast"]["network"]%></li>
            </ul>
            </li>
        </ul>
    <% }); %>
    
    var express = require("express");
    var app = express();
    var request = require ("request");
    app.set("view engine", "ejs");
    
    // this is getting information from the API and returning results in the ejs.
    app.get("/sportsapp", function(req, res){
    request("https://api.sportradar.us/ncaamb-t3/games/2017/02/18/schedule.json?api_key=", function(error, response, body){
        if(!error && response.statusCode == 200){
            var data = JSON.parse(body);
              res.render("results", {data : data});
           }
      });   
    });
    
    
    app.listen(process.env.PORT, process.env.IP, function(){
        console.log("Sports App has Started");
    });