Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Requisição de API node só funciona na segunda vez que eu chamo.

Olá, estou criando uma API em NODE, ela vai fazer uma requisição em um link externo e retornar o JSON, mas ela me trás valor desejado somente na segunda vez que carrego, na primara vez não retorna, dai mandou executar novamente e funciona alguém poderia me dar uma ideia de por que funciona no na segunda vez que chama.

function requisicao(id){
    request.post(API,  {
        body: {
            Valores: {
                ID: id
            }
        },
        json: true
    }, (error, res, body) => {
        if (error) {
            console.log(error);
            valor = "Verifique conexão";
        } else {
            valor = body;
        }
    });

}
``


//metodos que serão exportados para o front-end
exports.ler = (req, res) => {  
    requisicao(req.params.id);

    content[0] = valor.result[0].Retorno;
    res.status(200).json({
        content
    });

};
//chamada do front
 router.get('/ler/:id', controllerLer.ler);

`

1 resposta
solução!

Achei o problema, quando chamava a função não dava tempo de receber o retorno do link externo para carregar meu content. Resolvi da seguinte forma não se é a mais adequada, add um setTimeout para alimentar o content e dar send para o front , com isso ele espera um pouco e da tempo da função buscar a informação.

//metodos que serão exportados para o front-end
exports.ler = (req, res) => {
    //console.log(res.params.id);
    requisicao(req.params.id);
    setTimeout(() => {
        content[0] = valor.result[0].Retorno;
        res.status(200).json({
            content
        });
    }, 100); 
};

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software