Estoy tratando de inicializar la tabla de la base de datos según el modelo, pero la tabla no se puede crear y no hay ningún error. Además, después de esta acción, el objeto sequelize.models tiene AccountsModel.
import { DataTypes, Model, Sequelize } from 'sequelize' import { DatabaseConfig } from '../../database/config' export class AccountsModel extends Model { } export function initializeAccountsModel (sequelize: Sequelize): void { AccountsModel.init({ id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, }, email: { type: DataTypes.STRING, allowNull: false, }, }, { sequelize, tableName: DatabaseConfig.TABLE_NAMES.Accounts, }) }El método Model.sync() está funcionando, pero voy a seguir OOP.
El método .sync() es la acción que realmente crea las tablas cuando inicia su aplicación. Entra en su directorio de modelos y crea las tablas en función de los atributos que ha especificado en los modelos individuales. Si no ejecuta .sync(), esta acción no ocurrirá.
Si no desea usar .sync(), la alternativa es crear manualmente las tablas (no es excelente si alguna vez necesita volver a implementar por algún motivo) o utilizar migraciones.
Otra nota importante con respecto a .sync() es que utilizará la consulta SQL CREAR TABLA SI NO EXISTE al construir a partir de los modelos, por lo que si ha agregado atributos al modelo entre sincronizaciones, estas nuevas columnas no se agregarán a la tabla. cuando vuelvas a sincronizar. Puede eludir esto pasando {force: true} a .sync(), pero eso primero BOTARÁ la tabla y luego la CREARÁ de nuevo, lo que provocará la pérdida de datos.
Las migraciones son muy recomendables para las aplicaciones de producción.