Ошибка типа: не удается прочитать свойство '89' из undefined-Hubspot - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь получить все предложения от Hubspot, но по некоторым причинам я получаю ошибки для некоторых сделок. Ошибка имеет тип Cannot read property '89' of undefined.

var fetch = require("node-fetch");
getHubspotData('https://api.hubapi.com/deals/v1/deal/paged?hapikey=demo&properties=dealname&properties=dealstage&properties=closedate&properties=dealtype&properties=type&properties=hubspot_owner_id&properties=amount&properties=notes_last_updated&includeAssociations=true');
async function getHubspotData(url) {
    console.log("URL: " + url);
var iterations = 0;
    for (let i = 0; i < 100; i++) {
        await fetch(url)
            .then((resp) => resp.json()) // Transform the data into json
            .catch((error) => {
                console.log("Error processing JSON: " + error)
            }).then(function (data) {
console.log("Then-3");
                iterations = iterations + 1;
                console.log("I: " + iterations);
                if ((data.hasMore == false) && (i == data.deals.length)) {
                    console.log("Synced all Deals From Hubspot");
                    console.log("Program Terminating...........................................");
                    process.exit();
                }
if (data === undefined) {
                    console.log("data is undefined//////////////////////////////////////////////////////////////////////");
                    fetch(url)
                        .then((resp) => resp.json())
                        .then(function (data) {
console.log(data.deals.length);
                        }
                        )
                } else {
                    console.log("data is NOT undefined");
                }
var dealId = data.deals[i].dealId;
                var dealName = data.deals[i].properties.dealname.value;
console.log(dealName);
offset = data.offset;
                hasMore = data.hasMore;
                dealLength = data.deals.length;
                if ((hasMore == true) && (i + 1 >= dealLength)) {
                    console.log("NEW LOOP>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                    var url = 'https://api.hubapi.com/deals/v1/deal/paged?hapikey=demo&properties=dealname&properties=dealstage&properties=closedate&properties=dealtype&properties=type&properties=hubspot_owner_id&properties=amount&properties=notes_last_updated&includeAssociations=true&offset=' + offset;
                    getHubspotData(url);
                }
            }).catch((error) => {
                console.log("Error getting the deals //////////////////////////////////////////////////////////// " + error)
})
}

И это кажется случайным. При одном выполнении это может привести к ошибке для сделки 69-Cannot read property '69' of undefined, а в следующий раз, когда я ее запущу, это приведет к ошибкам в некоторых других сделках. Я попытался использовать условие if, чтобы проверить, являются ли данные undefined, но это не помогает. Не уверен, почему я получаю эту ошибку и не могу найти способ ее исправить. Любая помощь по этому вопросу будет принята с благодарностью!

...