1
resposta

Array no Node JS

Preciso inserir um array no banco via Node JS, segue o código abaixo. Ao fazer isso diretamente conforme bloco 1 não tenho nenhum problema. Mas ao tentar inserir via req.body no postman os dados ficam como undefined e na query consequentemente nulos. Alguem poderia me ajudar?

[
    {
        "os": 123456789,
        "dt_saida": "2021-03-09T03:00:00.000Z",
        "patrimonio": "12912 | 97117 ",
        "descricao": "NOBREAK 600VA",
        "modelo": "NOBREAK MCM UPS 600VA STD TI PRETO",
        "dt_cadastro": "2021-05-31"
    },
    {
        "os": 123456789,
        "dt_saida": "2021-03-09T03:00:00.000Z",
        "patrimonio": "12912 | 97117 ",
        "descricao": "NOBREAK 600VA",
        "modelo": "NOBREAK MCM UPS 600VA STD TI PRETO",
        "dt_cadastro": "2021-05-31"
    }
]

{

// POST
router.post("/item", (req, res, next) => {
  mysql.getConnection((error, conn) => {
    if (error) {
      return res.status(500).send({ error: error });
    }
// Bloco 1
    const mockRecords = [
      [
        46085,
        "2021-03-09 00:00:00",
        "12912 | 97117 ",
        "NOBREAK 600VA",
        "NOBREAK MCM UPS 600VA STD TI PRETO",
        "2021-05-31 00:00:00",
      ],
      [
        46086,
        "2021-03-09 00:00:00",
        "12912 | 97117 ",
        "NOBREAK 600VA",
        "NOBREAK MCM UPS 600VA STD TI PRETO",
        "2021-05-31 00:00:00",
      ],
    ];

// Bloco 2
    let bodyRecords = [

       [ req.body.os,
        req.body.dt_saida,
        req.body.patrimonio,
        req.body.descricao,
        req.body.modelo,
        req.body.dt_cadastro,
       ]
      ,
    ];

    let arrayNovo = [];

    for (let index = 0; index < bodyRecords.length; index++) {
      arrayNovo.push(bodyRecords);
    }

    console.log(bodyRecords);

    const sql =
      "INSERT into item (os, dt_saida, patrimonio, descricao, modelo, dt_cadastro) values ?";

    conn.query(sql, arrayNovo, (error, resultado, field) => {
      conn.release();
      if (error) {
        return res.status(500).send({ error: error });
      }
      res.status(201).send({
        mensagem: "Inserido com sucesso",
        id_feedback: resultado.insertId,
      });
    });
  });
});
1 resposta

Boa tarde Carlos, tudo certo?

Eu tenho 2 hipóteses sobre o que podem estar acontecendo:

Você está utilizando algum middleware que trata de receber o corpo da requisição e transformá-lo em um objeto? Talvez utilizar um body-parser.json() ou express.json() resolvam o seu problema.

Outra coisa que pode estar causando essa situação é o envio da requisição como x-www-form-urlencoded ou um raw sem estar formatado como JSON. Tente alterar essas configurações pelo Postman e ver se você obtém algum sucesso na requisição.

Também não pude deixar de notar que o conteúdo que você trouxe não se assemelha ao que está sendo utilizado no curso, então caso isso seja um projeto que você esteja trabalhando eu sugiro realizar a Formação Node.js com Express por completo antes de realizar um projeto que vai para produção.

Espero ter ajudado e bons estudos!