1
resposta

Usar o array de json recebido da função assíncrona para inserir um outro função (alimentar meu DB)

Percebi que peguntei no setor errado do forum. Mas, se alguem conseguir me ajudar. Agradeço muito.

Olá, pessoal.

Como faço para usar o resultado recebido de uma Promise (array de Json) fora da função?

ex:

const allData = async ( ) => { 
    const response = await axios.get (www.algumsite.com/api) //retorna um array de Json
        return response
        }

Desse modo, preciso inserir todos os dados atribuído a função allData dentro da minha query

class Contacts{
    dump(allData){
        const sql = `INSERT INTO tbContacts SET ?`;
        con.query(sql, contact, (error, result) => {
            if(error){
                console.log(error)
            }else{
                console.log(result.affectedRows + " record(s) updated");
            }
        })
    }

O mesmo não funciona, pois o allData continua como uma promise e nao um array de Json de dados que gostaria de inserir.

1 resposta

Olá Gabriel, tudo bem contigo?

Entendi sua dúvida. O que está acontecendo é que a função allData retorna uma Promise, e para acessar o resultado dessa Promise (o array de Json), é necessário utilizar o método then.

Você pode fazer o seguinte:

const allData = async () => {
  const response = await axios.get('www.algumsite.com/api');
  return response.data; // retorna apenas o array de Json
}

// para utilizar o resultado da Promise, é possível fazer o seguinte:
allData().then((data) => {
  // aqui dentro, a variável 'data' contém o array de Json retornado pela Promise
  const contacts = new Contacts();
  data.forEach((contact) => {
    contacts.dump(contact);
  });
}).catch((error) => {
  console.log(error);
});

Dessa forma, é possível acessar o resultado da Promise e inserir os dados no seu banco de dados utilizando a classe Contacts. Note que utilizei o método forEach para percorrer o array de Json e inserir cada objeto no banco de dados.

Em suma era isso, espero ter ajudado, caso precise estarei aqui.

Um abraço e bons estudos!