Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Axios X array.Push no EJS

Boa tarde!

Uma ajudinha por favor...

Na minha pagina html.ejs, contem uma função que deverá buscar dados do banco.

Retorna corretamente dados, mas meu problema está na estrutura do array formado dentro da chamada do axios:

        axios.get(`/route_Dashboard/lucroAnual/${2012}/${2016}`)
          .then((response) => {                  
              response.data.forEach(element => {
                dps.push({label: "2001", y: 1207062});
              })          
            }
          )
          console.log(dps);

Eu não consigo acessar os dados desse array, colocando qualquer forma: dps[0], ou dps.label, ou dps[0].label e etc...

Porém se eu realizar a montagem do meu array nesse formato, sem usar axios:

          for (var i = 0; i < 6; i++) {
            dataLucro.push({ label: "2001", y: 1207062 })
          }
          console.log(dataLucro);

Ele retorna outro formato de estrutura de array e funciona meu acesso aos valores! Por favor, preciso de ajuda urgente, pois já fazem duas semanas que to preso nessa ocorrencia.

5 respostas

Boa noite, Everson! Como vai?

No primeiro caso, quando vc faz console.log(dps), o que é impresso? Já no segundo caso, quando vc faz console.log(dataLucro) o que é retornado?

Vc pode colar aqui ambos os resultados pra eu dar uma olhada?

Na sequencia

[]
0: {label: "2001", y: 1207062}
1: {label: "2001", y: 1207062}
2: {label: "2001", y: 1207062}
3: {label: "2001", y: 1207062}
4: {label: "2001", y: 1207062}
length: 5
__proto__: Array(0)

..............................

(6) [{…}, {…}, {…}, {…}, {…}, {…}]
0: {label: "2001", y: 1207062}
1: {label: "2001", y: 1207062}
2: {label: "2001", y: 1207062}
3: {label: "2001", y: 1207062}
4: {label: "2001", y: 1207062}
5: {label: "2001", y: 1207062}
length: 6
__proto__: Array(0)
solução!

Everson, o que está acontecendo no primeiro caso é que a sua requisição feita pelo Axios é assíncrona! Portanto, só há garantia do vetor dps estar pronto para ser utilizado dentro do then!

Veja se o trecho de código a seguir resolve o seu problema:

axios.get(`/route_Dashboard/lucroAnual/${2012}/${2016}`)
      .then((response) => {
            response.data.forEach(element => {
                  dps.push({label: "2001", y: 1207062});
            });

            // Manipule aqui o vetor dps
            console.log(dps[0]);
      });

Qualquer coisa é só falar!

Grande abraço!

Perfeito, funcionou. Não me liguei desse detalhe, muito obrigado!

Por nada, Everson! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos, meu aluno!