Skip to content

Backend.Persistencia.

Nat Marzec edited this page Sep 2, 2020 · 16 revisions

Comenzando a persistir ...



  1. Instalación:

    npm install --save sequelize

    npm sequelize --version ➡️ 6.14.5

    npm install mysql2

    npm install --save-dev sequelize-cli

2.Otorgar privilegios a db:

   mysql> create user 'nat' identified by 'miPassword';

   mysql> grant all privileges on combapp.* to nat;

3.Cliente Sequelize:

comandosSequelize


Entonces...



Para crear una entidad por ejemplo Venta la defino dentro de backend de la siguiente manera:

"use strict";
const { Sequelize, Op, Model } = require("sequelize");
const {Cliente}    = require("./sequelizeConnection")
module.exports = function (sequelize, DataTypes) {
  const Venta = sequelize.define(
    "Venta",
    {
      fecha: DataTypes.DATE,
      facturado: DataTypes.BOOLEAN,
      saldoCobrado: DataTypes.INTEGER,
      montoSinCobrar: DataTypes.INTEGER,
      tipoDePago: DataTypes.STRING,
    },

    {
      tableName: "Ventas",
      modelName: "Venta",
    }
  );
  return Venta;
};

Integro Venta al archivo SequelizeConnection.js

'use strict'

const Sequelize = require('sequelize');
const VentaModel=require('./venta');

const DBURL='mysql://nat:miPassword@localhost:3306/combapp'
let sequelize=new Sequelize(DBURL,{
   operatorsAliases:'false',
    pool: {
    max: 10,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

var models={}
models=sequelize
models=Sequelize

const Venta= VentaModel(sequelize,Sequelize);

sequelize.authenticate()
 .then(() => {
   console.log('BD_CONECTADA!!');
 })
 .catch(err => {
   console.error('ERROR,_BD_NO_CONECTADA:', err);
 });

sequelize.sync()
  .then(() => {
    console.log(`Base de datos y tablas creadas, modelos sincronizados!`)
    console.log("SOY VENTA SYNC:",Venta=== sequelize.models.Venta);   
  })

module.exports = {
  sequelize,
  Venta
};

Luego ejecuto en consola:

Aclaración: En este proyecto solo se trabajan las migraciones en una primera instancia para modificar fácilmente la base de datos, no es el objetivo de este software las migraciones,sin embargo los seeders para cargar la base de datos. ❗ ❕ 👍

Para migrar:

npx sequelize-cli migration:generate --name Venta ➡️Si se quiere migrar la entidad Venta.

npx sequelize-cli db:migrate ➡️ si se quiere migrar todos las entidades.

Para seeders:

npx sequelize-cli seed:generate --name Cliente

Ahora se edita el archivo que se generó xxxxxxxxxxxx-Cliente.js para insertar sus datos a la tabla Ventas:

'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {

    
      await queryInterface.bulkInsert('Cliente', [{
      nombre: 'Brandon',
      apellido: 'Adam',
      cuit:'27350268263',
      razonSocial:'developer',
      telefono:'2478302010',
      email:'b_adam@gmail.com',
     }], {});
    
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.bulkDelete('Venta', null, {});
  }
};

Luego comprometer el archivo a la base de datos:

npx sequelize-cli db:seed:all

Captura de pantalla de 2020-09-01 22-23-06

...y en la base de datos:

Captura de pantalla de 2020-09-01 22-29-24

Clone this wiki locally