1
resposta

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

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 função UP ( ) dentro do arquivo da pasta seeds:

 async up (queryInterface, Sequelize) {
    await queryInterface.bulkInsert('pessoas', 
    allData, {});
  } ...

O codigo não tem funcionado pois o allData esta ainda retornando como uma promisse e não o array de json que gostaria.

1 resposta

Olá, Gabriel! Tudo bem com você?

Peço desculpa pela demora para responder o seu tópico.

Para resolver esse problema, você pode utilizar o método "then" da Promise para acessar o valor retornado pela função assíncrona. Ficaria algo assim:

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

allData().then((data) => {
  // aqui você pode usar o array de Json retornado pela função allData
  async up (queryInterface, Sequelize) {
    await queryInterface.bulkInsert('pessoas', data, {});
  }
})

Dessa forma, você consegue acessar o array de Json retornado pela função allData e usá-lo na função up.

Espero ter lhe ajudado. Caso ainda esteja com problemas, peço que compartilhe todo o seu projeto, via GitHub ou Drive do Google, assim poderei lhe ajudar.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.