簡體   English   中英

無法循環遍歷 node.js 中的嵌套 object

[英]Failing to Loop through a nested object in node.js

我正在嘗試遍歷嵌套的 object 並將數據保存到我的雲 firestore 數據庫,但它不起作用,

這是我從 API 調用中檢索到的 object 的結構,

{
    "count": 133,
    "filters": {
        "dateFrom": "2021-04-12",
        "dateTo": "2021-04-22",
        "permission": "TIER_ONE"
    },
    "matches": [
        {
            "id": 304061,
            "competition": {
                "id": 2021,
                "name": "Premier League",
                "area": {
                    "name": "England",
                    "code": "ENG",
                    "ensignUrl": "https://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg"
                }
            },
            "season": {
                "id": 619,
                "startDate": "2020-09-12",
                "endDate": "2021-05-23",
                "currentMatchday": 31,
                "winner": null
            },
            "utcDate": "2021-04-12T17:00:00Z",
            "status": "SCHEDULED",
            "matchday": 31,
            "stage": "REGULAR_SEASON",
            "group": "Regular Season",
            "lastUpdated": "2021-04-12T16:51:35Z",
            "odds": {
                "homeWin": 3.43,
                "draw": 3.31,
                "awayWin": 2.15
            },
            "score": {
                "winner": null,
                "duration": "REGULAR",
                "fullTime": {
                    "homeTeam": null,
                    "awayTeam": null
                },
                "halfTime": {
                    "homeTeam": null,
                    "awayTeam": null
                },
                "extraTime": {
                    "homeTeam": null,
                    "awayTeam": null
                },
                "penalties": {
                    "homeTeam": null,
                    "awayTeam": null
                }
            },
            "homeTeam": {
                "id": 74,
                "name": "West Bromwich Albion FC"
            },
            "awayTeam": {
                "id": 340,
                "name": "Southampton FC"
            },
            "referees": [
                {
                    "id": 11430,
                    "name": "Simon Hooper",
                    "role": "MAIN_REFEREE",
                    "nationality": "England"
                },
                {
                    "id": 11570,
                    "name": "Harry Lennard",
                    "role": "ASSISTANT_N1",
                    "nationality": "England"
                },
                {
                    "id": 11505,
                    "name": "Derek Eaton",
                    "role": "ASSISTANT_N2",
                    "nationality": "England"
                },
                {
                    "id": 11585,
                    "name": "Craig Pawson",
                    "role": "FOURTH_OFFICIAL",
                    "nationality": "England"
                },
                {
                    "id": 11487,
                    "name": "Kevin Friend",
                    "role": "VIDEO_ASSISTANT_REFEREE",
                    "nationality": "England"
                }
            ]
        },
        {
            "id": 303253,
            "competition": {
                "id": 2002,
                "name": "Bundesliga",
                "area": {
                    "name": "Germany",
                    "code": "DEU",
                    "ensignUrl": "https://upload.wikimedia.org/wikipedia/commons/b/ba/Flag_of_Germany.svg"
                }
            },
            "season": {
                "id": 599,
                "startDate": "2020-09-18",
                "endDate": "2021-05-15",
                "currentMatchday": 28,
                "winner": null
            },
            "utcDate": "2021-04-12T18:30:00Z",
            "status": "SCHEDULED",
            "matchday": 28,
            "stage": "REGULAR_SEASON",
            "group": "Regular Season",
            "lastUpdated": "2021-04-12T14:42:35Z",
            "odds": {
                "homeWin": 2.8,
                "draw": 3.72,
                "awayWin": 2.36
            },
            "score": {
                "winner": null,
                "duration": "REGULAR",
                "fullTime": {
                    "homeTeam": null,
                    "awayTeam": null
                },
                "halfTime": {
                    "homeTeam": null,
                    "awayTeam": null
                },
                "extraTime": {
                    "homeTeam": null,
                    "awayTeam": null
                },
                "penalties": {
                    "homeTeam": null,
                    "awayTeam": null
                }
            },
            "homeTeam": {
                "id": 2,
                "name": "TSG 1899 Hoffenheim"
            },
            "awayTeam": {
                "id": 3,
                "name": "Bayer 04 Leverkusen"
            },
            "referees": []
        }]}

這是我嘗試遍歷我的 object 的匹配部分,我希望能夠遍歷每個匹配,同時仍然能夠在每次迭代中訪問子對象並在我的雲 firestore 數據庫中設置數據

   axios.request(options).then(function(response) {



    //console.log(typeof response); // check the type of response returning already in JSON format
    //console.log(response); // check the response object and based on key/values process it 

    const data = response.data; // if resp contains the data you will get it here.


    //console.log(response.data);

    /* for (let data1 in data.pagination) {
       // from the sample response you shared in the question 
       console.log(data1) // prints the keys
       console.log(data.pagination.data1) // prints the values*/

    for (i = 0; i < data.count; i++) {

        // from the sample response you shared in the question 
        // console.log(index);
        // console.log(data.f[data1]) // prints the keys
        // //console.log(data.pagination.data1) // prints the values

        const soccerData = {
            name: `${data.matches[i].competition.name}`,
            id: `${data.matches[i].competition.id}`
        };
        return db.collection('matches').doc(`${data.matches[i].id}`)
            .set(soccerData).then(() =>
                console.log('data written to database'));




    }


}).catch(function(error) {
    console.error(error);
});
 

要循環匹配使用:

 response.data.matches.forEach(match => { // do something with the match } )

而不是 for 循環。 然后你可以做

 const soccerData = { name: `${match.competition.name}`, id: `${match.competition.id}` }

並且:

 return db.collection('matches').doc(`${match.id}`).set(soccerData).then(() => console.log('data written to database'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM