Jump to content

Insert usando sequelize no nodejs com SQL Server


Jovem Developer

Recommended Posts

Bom dia.

Estou a fazer uma API nodejs usando o Express, Sequelize e Microsoft SQLServer.

Como estou a começar a aprender sobre os modelos do Sequelize, estou a tentar inserir dados na minha base de dados através de um model sem query.

Estou a usar isso numa rota express para fazer a inserção com o sequelize.

const { Sequelize } = require('sequelize');
const PrintCard_Perfis = new Sequelize('mssql://sa:123456@localhost/PrintCard_Perfis')
const db_cliente = new Sequelize('mssql://sa:123456@localhost/sakila')
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
var app = express();
var router = express.Router();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors({origin:"*",}));
app.use('/api', router);
app.use(function(req,res,next){
   res.header("Access-Control-Allow-Origin","*");
   res.header("Access-Control-Allow-Methods","GET,HEAD,POST,PUT,OPTIONS");
   res.header("Access-Control-Allow-Headers","Origin,X-Requested-With,contentType,Content-Type,Accept,Authorization");
   next();
});

var port = process.env.PORT || 8080;
app.listen(port);

router.use((request,response,next)=>{
    console.log('middleware');
    next();
 })


router.route('/test').post((request, response)=> {
  const users = PrintCard_Perfis.define('Perfis', {
    id_utilizador: {
        primaryKey: true,
        type: Sequelize.INTEGER,
    },
    nome_utilizador: Sequelize.STRING,
    password_utilizador: Sequelize.STRING
  });
  return users.create({
      id_utilizador: request.body.id_utilizador,
      nome_utilizador: request.body.nome_utilizador,
      password_utilizador: request.body.password_utilizador,
  }).then(function (users) {
      if (users) {
          response.send(users);
      } else {
          response.status(400).send('Error in insert new record');
      }
  });
});

Este é o meu código.

Já o testei usando o Postman e reparei que na minha consola, a api está a enviar a seguinte query : 

Executing (default): INSERT INTO [Perfis] ([id_utilizador],[nome_utilizador],[password_utilizador],[createdAt],[updatedAt]) OUTPUT INSERTED.[id_utilizador],INSERTED.[nome_utilizador],INSERTED.[password_utilizador],INSERTED.[createdAt],INSERTED.[updatedAt] VALUES (@0,@1,@2,@3,@4);

No postman tenho esta rota a ser enviada como um post e este body a ser enviado :

Rota : http://localhost:8080/api/test

Body

{"id_utilizador" : 123,"nome_utilizador" : "sequelize","password_utilizador" : "pass"}

 

A razão pela qual, o meu body não está a ser enviado é porque a query que é enviada contém 5 campos, e na tabela "Perfis" apenas tenho 3, logo dá erro. Gostaria de saber o que posso mudar no código, de modo ao sequelize enviar a query corretamente só com os campos que estão nesse body. Obrigado pela ajuda 🙂

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.