Buenas noches.
Tengo un servidor express. El script principal del servidor tiene la siguiente exportación:
export const sequelize = new Sequelize( 'postgres', config.db_user, config.db_password, { host: 'localhost', port: config.db_port, dialect: 'postgres' })Y estoy tratando de crear una estructura de archivos que permita que cada modelo se defina en un archivo diferente. Ahora mismo tengo un modelo de Sequelize definido así:
import { Test } from "@api-models"; import { DataTypes } from "sequelize"; import { sequelize } from "../main"; Test.init({ id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: { type: DataTypes.STRING, allowNull: false }, joinedDate: { type: DataTypes.DATE } }, {sequelize: sequelize}) export default Test Pero esto no funciona, ya que la importación de sequelize en el archivo del modelo devuelve undefined y la inicialización falla con el siguiente mensaje de error:
Error: No Sequelize instance passed
He estado investigando durante un tiempo, pero la mayoría de las respuestas parecen depender de la sintaxis de exportación de nodos o JS para especificar el orden de ejecución, en lugar de las importaciones/exportaciones de ES6. ¿Cuál sería el enfoque adecuado para hacer esto?
Esto se solucionó, lo que pasaba es que había una dependencia circular entre el router, los modelos y el archivo principal que inicializaba a ambos.
Mover la lógica de inicialización de Sequelize a un archivo diferente resolvió el problema.