Problem with request post on a NODE.JS loop

Asked

Viewed 96 times

-1

I have a problem with my code and I couldn’t get out of it. What happens is that I make a request get ( that is working ) and I get the return of it that comes in JSON format, after that I do a for to go through my data and do an insertion of data via ( request post ), the problem is there:

async function intervalFunc() {
    console.log('Um minuto:');

    request('https://xxx/api/report/v1', function (error, response, body) {
        console.log('error:', error); // Print the error if one occurred
        console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
        var obj = JSON.parse(body);

        (async () => {
            for (var i = 0; i < obj.data.length; i++) {
                console.log('dentro do for passou pelo id: ' + i);
                var val = obj.data[i];
                await inserirBrasil(val, i);

            }
        })()


    });

}

async function inserirBrasil(val, i) {
    console.log('iserindo id ' + i + " "+val.uf);

    request.post('http://localhost:1111/api/brasil/', {
        data: { uid: val.uid, uf: val.uf, estado: val.state }
    }, (error, res, body) => {
        if (error) {
            //console.error(error)
            return
        }
        //console.log('ok ', i);
        //console.log('res ', res);
        //console.log('body ', body);
    })

}

below is my console return:

Um minuto:
error: null
statusCode: 200
dentro do for passou pelo id: 0
iserindo id 0 SP
dentro do for passou pelo id: 1
iserindo id 1 RJ
dentro do for passou pelo id: 2
iserindo id 2 CE
dentro do for passou pelo id: 3
iserindo id 3 DF
dentro do for passou pelo id: 4
iserindo id 4 MG
dentro do for passou pelo id: 5
iserindo id 5 SC
dentro do for passou pelo id: 6
iserindo id 6 RS
dentro do for passou pelo id: 7
iserindo id 7 BA
dentro do for passou pelo id: 8
iserindo id 8 PR
dentro do for passou pelo id: 9
iserindo id 9 AM
dentro do for passou pelo id: 10
iserindo id 10 PE
dentro do for passou pelo id: 11
iserindo id 11 ES
dentro do for passou pelo id: 12
iserindo id 12 GO
dentro do for passou pelo id: 13
iserindo id 13 MS
dentro do for passou pelo id: 14
iserindo id 14 AC
dentro do for passou pelo id: 15
iserindo id 15 SE
dentro do for passou pelo id: 16
iserindo id 16 RN
dentro do for passou pelo id: 17
iserindo id 17 MA
dentro do for passou pelo id: 18
iserindo id 18 MT
dentro do for passou pelo id: 19
iserindo id 19 AL
dentro do for passou pelo id: 20
iserindo id 20 TO
dentro do for passou pelo id: 21
iserindo id 21 PI
dentro do for passou pelo id: 22
iserindo id 22 PA
dentro do for passou pelo id: 23
iserindo id 23 PB
dentro do for passou pelo id: 24
iserindo id 24 RO
dentro do for passou pelo id: 25
iserindo id 25 RR
dentro do for passou pelo id: 26
iserindo id 26 AP

and within the post of my api, I put a console.log(Object.Keys(req). length), result below:

size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33 size: 33

In summary, my poorly done code is sending the requisition (with all states together) every time I give a post ( and that should be a post for each state ). someone could give me a support?

below code in my api post

exports.post = async (repositorio, validationContract, req, res) => {
    try {

        let data = req.body;
        if (!validationContract.isValid()) {
            res.status(400).send({
                message: 'Existem dados inválidos na sua requisição.',
                validation: validationContract.errors()
            }).end();
            return;
        }

        let resultado = await repositorio.create(data);
        res.status(201).send(resultado);

    } catch (err) {
        console.log('Post com erro, motivo: ', err);
        res.status(500).send({ message: 'Erro no processamento', error: err });
    }
}

I modified the code below by changing the type 'date' to 'json' and the code entered only the first two records, not inserting the others.

async function inserirBrasil(val, i) {
    console.log('iserindo id ' + i + " "+val.uf);

    request.post('http://localhost:1111/api/brasil/', {
        json: { uid: val.uid, uf: val.uf, estado: val.state }
    }, (error, res, body) => {
        if (error) {
            //console.error(error)
            return
        }
        //console.log('ok ', i);
        //console.log('res ', res);
        //console.log('body ', body);
    })

}

  • Could we see the POST handling in your API? Because if the req in his console log. is the Express request object, the error is there.

  • grateful, added to the question code

1 answer

0

Problem solved, I modified the parameter type in request, I modified it to form and the problem was solved.

async function inserirBrasil(val, i) {
    console.log('iserindo id ' + i + " "+val.uf);

    request.post('http://localhost:1111/api/brasil/', {
        json: { uid: val.uid, uf: val.uf, estado: val.state }
    }, (error, res, body) => {
        if (error) {
            //console.error(error)
            return
        }
        //console.log('ok ', i);
        //console.log('res ', res);
        //console.log('body ', body);
    })

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.