数组长度不变

时间:2019-06-01 09:39:50

标签: javascript node.js

我认为在将api响应数据推入数组时犯了一个错误。它没有反映出来。数组的长度保持为1。

当我收到Watson API的回复时。我正在将该响应推送到数组中。然后,我再次调用fetchLogs函数以获取下一页并将其推入同一数组中。但是我只看到第一反应。

当没有日志时,我正在将其写入文本文件。我只看到第一反应。

任何人都可以指导我。为什么价值没有被推动。

let nxt_url = '';
const logs = [];

const fetchLogs = async () => {
   let newurl = checkUrl();
   try {
    let response = await axios.get(newurl, {
      withCredentials: true,
      headers: {
        "Accept": "application/json",
        "Content-Type": "application/json"
      },
      auth: {
        username: "abc123"
        password: "xyz123"
      }
    });
    if(!isEmpty(response.data.pagination)) {
      nxt_url = response.data.pagination.next_url;
      logs.push(response.data) // here I am pushing
      await fetchLogs();
    } else {
      console.log("No More Logs");
      fs.writeFile("temp.txt", JSON.stringify(logs, null, 2), err => {
          if (err) console.log(err);
          console.log("log saved in an array !");
      });
    }
   } catch (error) {
     console.log(error.message);
   }
}

const checkUrl = () => {
  if(nxt_url !== '') {
    return `https://gateway.watsonplatform.net/assistant/api${nxt_url}`;
  } else {
    return 'https://gateway.watsonplatform.net/assistant/api/v1/workspaces/788e608a-118d-4c68-811a-45391400b024/logs?cursor=&version=2019-02-28';
  }
}

1 个答案:

答案 0 :(得分:0)

  if (response.data.pagination.next_url) {
      nxt_url = response.data.pagination.next_url;
      logs.push(response.data); // here I am pushing
      return fetchLogs();
    } else {
      logs.push(response.data);
      console.log(logs.length);
      console.log('No More Logs');
      fs.writeFile('temp.txt', JSON.stringify(logs, null, 2), err => {
        if (err) console.log(err);
        console.log('log saved in an array !');
      });
    }