</link>
Obtenga el diagrama entidad-relación de la base en la opción: Database > Reverse engineer
Compruebe el funcionamiento de las ventanas modales con las Add User, Edit y Delete.
Instale los módulos mysql2, express-generator, express-cli, sequelize, sequelize-cli y sequelize-auto de manera global.
npm i -g mysql2 express-generator express-cli sequelize sequelize-cli sequelize-auto
Compruebe el funcionamiento de los comandos, con:
express --help
sequelize-cli --help
sequelize-auto --help
NOTA: En caso de no obtener una respuesta de los comandos, consulte la sección de errores No se reconoce como comando.
Dentro de la carpeta security, mediante la línea de comandos:
express --view=ejs .
sequelize
(ORM
para acceder a la BD mediante Objetos), mysql2, dotenv y nodemon. npm install --save sequelize mysql2 dotenv nodemon
Agregue el script autostart en ./package.json.
...
"scripts": {
"start": "node ./bin/www",
"autostart": "nodemon ./bin/www"
},
...
Desde la línea de comandos, inicie el servidor:
npm run autostart
archivos estáticos
:
Cree el archivo ‘security/views/crud.ejs’. Copie todo el contenido de test.html dentro de ‘security/views/crud.ejs’.
Edite la vista
‘security/views/crud.ejs’, con:
...
<!-- 1. Referencia al archivo estático dentro de public -->
<!-- <link rel="stylesheet" href="./crud-style.css"> -->
<link rel="stylesheet" href="stylesheets/crud-style.css">
...
<!-- 2. Referencia al archivo estático dentro de public -->
<!-- <script src="./crud-javascript.js" defer></script> -->
<script src="javascripts/crud-javascript.js" defer></script>
...
Edite el enrutador
‘security/routes/users.js’, con:
...
/* GET users listing. */
router.get('/', function(req, res, next) {
/* 1. Renderización de la vista crud.ejs */
res.render('crud');
});
module.exports = router;
Dentro de la carpeta security, mediante la línea de comandos:
sequelize init
sequelize-auto -h 127.0.0.1 -d security -p 3306 -u <USUARIO_ADMIN> -x <CONTRASEÑA>
Modifique el archivo ‘config/config.json’, en el ambiente
development, con las credenciales de acceso al motor de bases de datos.
"development": {
"username": "<USUARIO_ADMIN>",
"password": "<CONTRASEÑA>",
"database": "security",
"host": "127.0.0.1",
"dialect": "mysql"
}
Edite el enrutador ‘security/routes/users.js’, con:
...
var express = require('express');
var router = express.Router();
/* 1. Cargue los modelos de acuerdo con la configuración de la conexión */
const sequelize = require('../models/index.js').sequelize;
var initModels = require("../models/init-models");
var models = initModels( sequelize );
/* GET users listing. */
/* 2. Convierta el callback en asíncrono */
router.get('/', async function(req, res, next) {
/* 3. Uso del método findAll */
let usersCollection = await models.users.findAll({ })
/* 4. Paso de parámetros a la vista */
res.render('crud', { title: 'CRUD with users', usersArray: usersCollection });
});
module.exports = router;
Edite la vista ‘security/views/crud.ejs’, con:
renderización
de las variables mediante las etiquetas <%= %> y <% %>, de EJS. ...
<!-- 3. Título de la página -->
<title><%= title %></title>
...
<!-- 4. Título de la tabla -->
<h2><%= title %></h2>
...
<!-- 5. Arreglo de usuarios -->
<tbody>
<% usersArray.forEach( user => { %>
<tr>
<td>
<span class="custom-checkbox">
<input type="checkbox" id="checkbox1"
name="options[]" value="1">
<label for="checkbox1"></label>
</span>
</td>
<td><%= user.iduser %></td>
<td><%= user.name %></td>
<td>
<!--
Dato relacionado
users->users_roles->roles.name
-->
</td>
<td>
<a href="#editEmployeeModal" class="edit"
data-toggle="modal"><i
class="material-icons"
data-toggle="tooltip"
title="Edit"></i></a>
<a href="#deleteEmployeeModal"
class="delete" data-toggle="modal"><i
class="material-icons"
data-toggle="tooltip"
title="Delete"></i></a>
</td>
</tr>
<% }) %>
</tbody>
Compruebe la salida de la URL http://localhost:3000/users
(STOP 3) Versiona local y remotamente el repositorio security.
En grupos de tres (3) personas, completen el diagrama de secuencia de un requerimiento GET exitoso.
"Discover the power of Sequelize for simplifying database operations in Node.js with @VaishnaviRawool's insightful guide. From advantages to getting started, it's a must-read for developers. #NodeJS #Sequelize #DatabaseOps #ORM" https://t.co/DvopupkfYV
— prod42net (@prod42net) June 27, 2024
Sequelize, ORM, archivos estáticos, vista, enrutador, modelo, renderización, encriptación, SALT