Acceso a machine Learning
https://blog.javierheras.website/
Tutorial sobre NodeJs y Angular
Además de actualizar una sola instancia con BulkCreate, también podemos crear varias instancias a la vez.
Usuario.bulkCreate([
{ dni: '001', nombre: 'Juan'},
{ dni: '002', nombre: 'Pedro'}
]
)
.then(function(success) {
console.log("La instancias han sido creadas correctamente");
}, function(err) {
console.log(err + " Un usuario ya existe en la base de datos");
});
Al insertar una instancia, vamos a usar success.get({ plain: true }) para visualizar la instancia insertada
Usuario.create(
{ dni: '001', nombre: 'Juan'}
)
.then(function(success) {
console.log(success.get({ plain: true }))
console.log("La instancia ha sido creada correctamente");
}, function(err) {
console.log(err + " El usuario ya existe en la base de datos");
});
O tambien podemos usar console.log(JSON.stringify(success));
Usuario.findOne(
{
where:
{ nombre: 'Juan' }
}).
then(function (usuario) {
if (usuario == null) {
console.log('No existe ningun usuario con ese nombre')
} else {
usuario.nombre='Pedro'
console.log(usuario.dni + ' ' + usuario.nombre);
usuario.reload().then(() => {
console.log(usuario.dni + ' ' + usuario.nombre);
})
}
}).catch(function (err) {
console.log(err + ': Error de obtencion de Usuario');
});
Tenemos un producto que tiene
los siguientes valores:·
Incremento del campo valor en 2:
var Producto = require('./models/producto')(sequelize, Sequelize.DataTypes);
Producto.findByPk('1').
then(function (producto) {
if (Producto== null) {
console.log('El producto no encontrado en la base de datos')
} else {
producto.increment('valor',{by: 2} );
}
}).catch(function (err) {
console.log(err + ': Error de obtencion de producto');
});
Tenemos un producto que tiene
los siguientes valores:
Decremento del campo valor en 2:
var Producto = require('./models/producto')(sequelize, Sequelize.DataTypes);
Producto.findByPk('1').
then(function (producto) {
if (Producto== null) {
console.log('El producto no encontrado en la base de datos')
} else {
producto.decrement('valor',{by: 2} );
}
}).catch(function (err) {
console.log(err + ': Error de obtencion de producto');
});
Una instancia de la clase representa un objeto de ese modelo
Por ejemplo:
var usuario = Usuario.build({nombre: "Juan", primerApellido : "Garcia"});
Para persistir esta instancia en la base de datos:
usuario.save();
Otra forma de crear instancias:
Usuario.create({
dni:
'001',
nombre: 'Juan',
})
.then(function(success) {
console.log("La instancia ha sido creada correctamente");
}, function(err) {
console.log(err + " El usuario ya existe en la base de datos");
});
Usuario.findByPk('001').
then(function (usuario) {
if (usuario == null) {
console.log('El usuario no encontrado en la base de datos')
} else {
console.log(JSON.stringify(usuario));
}
}).catch(function (err) {
console.log(err + ': Error de obtencion de Usuario');
});
Usuario.destroy(
{
where: {
dni: '001',
}
})
.then(function (success) {
console.log(success);
if (success==0){ //Si no encuentra ningun registro
console.log('El usuario no existe en la base de datos')
}else{
console.log('Usuario borrado correctamente');
}
})
.catch(function (err) {
console.log(err + ': Error de borrado de Usuario');
})
Delete de una instancia
Usuario.destroy(
{
where: {
dni: '001',
}
})
.then(function (success) {
console.log(success);
if (success==0){ //Si no encuentra
ningun registro
console.log('El
usuario no existe en la base de datos')
}else{
console.log('Usuario borrado correctamente');
}
})
.catch(function (err) {
console.log(err + ': Error de
borrado de Usuario');
})
usuario.destroy({ force: true })
Un modelo es una abstracción que representa una tabla en la base de datos, nos dice el nombre de la tabla en la base de datos y las columnas que tiene y sus tipos de datos, el nombre del modelo no tiene porque coincidir con el nombre de la tabla en la base de datos, generalmente estas se ponen en singular y los nombres de las tablas en plural.
Los modelos se pueden definir de dos formas equivalentes en Sequelize:
Vamos a crear un modelo para representar usuarios, que tienen un nombre y un apellido. Queremos que nuestro modelo se llame Usuario y la tabla que representa se llame Usuarios en la base de datos.
var { Sequelize, Model, DataTypes } = require('sequelize');
var main = function () {
var sequelize = new Sequelize('mysql://javier:javier@localhost:3306/appORMUserProyect',
{
pool : {
max: 90,
min: 0,
acquire: 30000,
idle: 10000
}
}
);
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
var Usuario = sequelize.define('Usuario', {
// Model attributes are defined here
nombre: {
type: DataTypes.STRING,
allowNull: false
},
primerApellido: {
type: DataTypes.STRING
// allowNull defaults to true
}
}, {
sequelize, timestamps: false
});
sequelize.sync();
}();
var { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Usuario extends Model { }
Usuario.init({
dni: {
type: DataTypes.STRING,
primaryKey : true
},
nombre: {
type: DataTypes.STRING,
allowNull: false
},
},
{
sequelize,
timestamps: false,
modelName: 'Usuario'
}
);
return Usuario;
}
sequelize.sync();
Sequelize apoya el concepto de tablas paranoicas. Una tabla paranoica es aquella que, cuando se le dice que elimine un registro, no se va a eliminar realmente, solo se va eliminar en sequielize pero no en la base de datos.
Va a tener una columna especial llamada deletedAt que tiene la fecha y la hora de esa solitud de eliminacion.
Para hacer que un modelo sea paranoico, se debe de poner la opción paranoid: true a la definición del modelo. Paranoid necesita la opcion timestamps a true para funcionar
Podemos
cambiar el nombre preterminado de la columna deletedAt
por
otro nombre
Si queremos una eliminacion dura en nuestro modelo, entonces vamos a usar la opcion force: true
Usuario.destroy(Es un ORM de node.js que se utiliza para hacer consultas y operaciones en una base datos por ejemplo para Postgres, MySQL, MariaDB, SQLite y Microsoft SQL Server.
npm install --save sequelize
npm install --save mysql2
Para conectarnos a la base de datos, debemos crear una instancia de Sequelize. Esto se puede hacer de dos maneras:
Pasando los parámetros de conexión al constructor sequelize:
var sequelize = new Sequelize('nombreBaseDatos','usuario,'password',{
host: 'localhost',
dialect: 'mysql'
});
Pasando un único URI de conexión:
var sequelize = new Sequelize(
'mysql://usuario:password@nombreHost:puerto/basebd');
sequelize .authenticate()
.then(() => {
console.log('Conexión correcta a la base de datos');
})
.catch(err => {
console.error('Error de conexión a la base de datos', err);
});
sequelize.close()
Tenemos dos formas de agregar bootstrap a nuestro proyecto de angular:
Desde la interfaz de
línea de comando, instalamos bootstrap y hacemos referencia a él en
angular.json
npm install bootstrap –save
Si
deseamos utilizar la función Javascript de arranque, debemos instalar JQuery y
popperjs con él. BootstrapJS depende de Jquery
npm install jquery –save
Si
necesitamos la funcionalidad de un popover(Cuadro emergente que aparece cuando
el usuario hace clic en un elemento. La diferencia es que
el popover puede contener mucho más contenido.) En una aplicación
angular, puede agregar popper.js.
npm install popper.js –save
Hacemos referencia a la ruta en el archivo angular.json. y lo insertamos debajo del nodo build
"styles": [ |
"node_modules/bootstrap/dist/css/bootstrap.min.css", |
"src/styles.scss" |
], |
"scripts": [ |
"node_modules/jquery/dist/jquery.min.js", |
"node_modules/bootstrap/dist/js/bootstrap.min.js" ] |
Vamos a utilizar un servidor donde se alojan los archivos de boostrap para ello añadimos a index.html de nuestro proyecto angular:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script>
index.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Pruebas</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<app-root></app-root>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script>
</body>
</html>