Как получить данные из JSON с помощью Axios - PullRequest
0 голосов
/ 12 октября 2018

Это мой первый удар в Гэтсби и Аксиос, чтобы получить немного json из API.

В основном я пытаюсь получить некоторые данные json из этого файла json:

{
"filters": {},
"competition": {
    "id": 2019,
    "area": {
        "id": 2114,
        "name": "Italy"
    },
    "name": "Serie A",
    "code": "SA",
    "plan": "TIER_ONE",
    "lastUpdated": "2018-10-08T15:10:08Z"
},
"season": {
    "id": 290,
    "startDate": "2018-08-18",
    "endDate": "2019-05-26",
    "currentMatchday": 9,
    "winner": null
},
"standings": [
    {
        "stage": "REGULAR_SEASON",
        "type": "TOTAL",
        "group": null,
        "table": [
            {
                "position": 1,
                "team": {
                    "id": 109,
                    "name": "Juventus FC",
                    "crestUrl": "http://upload.wikimedia.org/wikipedia/de/d/d2/Juventus_Turin.svg"
                },
                "playedGames": 8,
                "won": 8,
                "draw": 0,
                "lost": 0,
                "points": 24,
                "goalsFor": 18,
                "goalsAgainst": 5,
                "goalDifference": 13
       ]
     }
   ]
 }

Вот то, что я использую для сопоставления данных:

team.data.standings.map((team, i) => {
const standingsNode = {
id: `${i}`,
parent: `__SOURCE__`,
internal: {
  type: `Season`,
},
children: [],

stage: team.stage,
type: team.type,
}

 const contentDigest = crypto
.createHash(`md5`)
.update(JSON.stringify(standingsNode))
.digest(`hex`);
standingsNode.internal.contentDigest = contentDigest;

createNode(standingsNode);
});

У меня вопрос, как мне отобразить дочерний элемент "table" для "standings" в моем коде?Когда я пытаюсь выполнить запрос в GraphiQL, у меня не получается развернуть данные таблицы, я могу только выбрать этап и ввести данные из данных json (см. Изображение ниже)

Пример GraphiQL

Любая помощь очень ценится!

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Вы можете сделать это вместо доступа к таблице с индексной позицией

team.data.standings.map((team, i) => {
    team.table.map((t, index) => {

    });
});
0 голосов
/ 12 октября 2018

Не совсем уверен, как вам нужны эти данные, так как я не очень разбираюсь в GraphQL, однако, как уже упоминалось выше, вам нужно использовать вторую карту.Таблица результатов на самом деле является массивом.Смотрите код ниже:

let team = {
    "filters": {},
    "competition": {
        "id": 2019,
        "area": {
            "id": 2114,
            "name": "Italy"
        },
        "name": "Serie A",
        "code": "SA",
        "plan": "TIER_ONE",
        "lastUpdated": "2018-10-08T15:10:08Z"
    },
    "season": {
        "id": 290,
        "startDate": "2018-08-18",
        "endDate": "2019-05-26",
        "currentMatchday": 9,
        "winner": null
    },
    "standings": [
        {
            "stage": "REGULAR_SEASON",
            "type": "TOTAL",
            "group": null,
            "table": [
                {
                    "position": 1,
                    "team": {
                        "id": 109,
                        "name": "Juventus FC",
                        "crestUrl": "http://upload.wikimedia.org/wikipedia/de/d/d2/Juventus_Turin.svg"
                    },
                    "playedGames": 8,
                    "won": 8,
                    "draw": 0,
                    "lost": 0,
                    "points": 24,
                    "goalsFor": 18,
                    "goalsAgainst": 5,
                    "goalDifference": 13
                }
           ]
         }
       ]
    }

let teamData = team.standings.map((team, i) => {
     const standingsNode = {
        id: `${i}`,
        parent: `__SOURCE__`,
        internal: {
          type: `Season`,
        },
        children: [],
        
        stage: team.stage,
        type: team.type,
        table: team.table.map(data=>{
        return {
            position: data.position,
            team: data.team.name,
            crestUrl: data.team.crestUrl

        };
    })
        
            
        
        }
     return standingsNode;
       });
console.log(teamData);
0 голосов
/ 12 октября 2018

Попробуйте изменить

team.data.standings.map((team, i) => {

на

team.data.standings[0].table.map((team, i) => {

или используйте две карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...