Para reconstruir los modelos de una base de datos preconstruida (tablas, relaciones y datos) a un proyecto de Express, será necesario incorporar el módulo sequelize-auto.
Desde la línea de comandos, en la raíz de la carpeta del proyecto.
Instale Sequelize CLI de forma global, con:
npm install -g sequelize-cli
Instale Sequelize Auto y MySQL de forma global, con:
npm install -g sequelize-auto mysql2
Instale Sequelize y el conector para MySQL en el proyecto, con:
npm install --save sequelize mysql2
Genere los archivos de configuración de Sequelize, con:
sequelize init
Modifique el archivo config/config.json
, en el ambiente development. Modifique los datos para establecer la conexión con el motor de bases de datos.
{
"development": {
"username": "<USUARIO-DE-DB>",
"password": "<CONTRASEÑA-DE-DB>",
"database": "dbatuh",
"host": "127.0.0.1",
"dialect": "mysql"
},
...
Desde la línea de comandos, en la raíz de la carpeta del proyecto.
Reconstruya los modelos a partir de las tablas. Escriba el nombre del usuario después de la bandera -u y la contraseña del usuario después de la bandera -x.
sequelize-auto -h 127.0.0.1 -d dbauth -u <USUARIO-DE-DB> -x <CONTRASEÑA-DE-DB> -p 3306
En la carpeta /models
:
Los archivos users.js, roles_users.js y roles.js contienen la información de los modelos reconstruidos.
El archivo init-models.js
contiene las relaciones entre los modelos reconstruidos. Los alias (valores de las claves as) son utilizadas como referencia en las relaciones entre los modelos.
...
roles.belongsToMany(users, { as: 'user_id_users', through: roles_users, foreignKey: "role_id", otherKey: "user_id" });
users.belongsToMany(roles, { as: 'role_id_roles', through: roles_users, foreignKey: "user_id", otherKey: "role_id" });
roles_users.belongsTo(roles, { as: "role", foreignKey: "role_id"});
roles.hasMany(roles_users, { as: "roles_users", foreignKey: "role_id"});
roles_users.belongsTo(users, { as: "user", foreignKey: "user_id"});
users.hasMany(roles_users, { as: "roles_users", foreignKey: "user_id"});
...