What worked for me is to:
- Create a file for each individual model like user.model.jsin foldermodels/user.model.js.
- Create index.jsinmodels/index.jsand import every model to it.
- Define association, run sync method in index.jsand export all models.
- Create a database.jsfile that holds information about Sequalize and import it and initialize it inapp.js
Example of one models/user.model.js
import { DataTypes } from 'sequelize';
import { sequelize } from '../database.js';
export const User = sequelize.define("user",{
    uid:{
      type:DataTypes.STRING,
      allowNull:false,
      unique: true
    },
    email:{
      type:DataTypes.STRING,
      allowNull:true
    },
    firstName:{
      type:DataTypes.STRING,
      allowNull:true
    },
    lastName:{
      type:DataTypes.STRING,
      allowNull:true
    },
    companyWebsite:{
      type:DataTypes.STRING,
      allowNull:true
    },
    domain:{
      type:DataTypes.STRING,
      allowNull:true
    },
    hsPortalId:{
      type:DataTypes.INTEGER,
      allowNull:true
    },
    integrations:{
      type:DataTypes.STRING
    },
    brandedKeywords : {
      type:DataTypes.STRING
    },
    companyName: {
      type:DataTypes.STRING
    },
    companyStreet:{
      type:DataTypes.STRING
    },
    companyZip:{
      type:DataTypes.STRING
    },
    companyCountry:{
      type:DataTypes.STRING
    },
    vatId:{
      type:DataTypes.STRING
    },
    brand:{
      type:DataTypes.STRING
    },
    markets:{
      type:DataTypes.JSON
    },
    niche : {
      type:DataTypes.JSON
    }
  
  },{schema:"api"})
Example of models/index.js
import { Billing } from './billing.model.js';
import { Competitor } from './competitors.model.js';
import { DemoAccount } from './demo.model.js';
import { Notification } from './notification.model.js';
import { Product } from './products.model.js';
import { Reseller } from './resellers.model.js';
import {Reseller_User} from './reseller_user.model.js'
import { Tag } from './tags.model.js';
import {User} from './user.model.js'
Reseller.belongsToMany(User, { through: Reseller_User });
User.belongsToMany(Reseller, { through: Reseller_User });
// this will create a UserId column on your Product table
// https://www.youtube.com/watch?v=HJGWu0cZUe8 40min
User.hasMany(Product,{onDelete: 'CASCADE',})
Product.belongsTo(User)
User.hasOne(DemoAccount,{onDelete: 'CASCADE',})
DemoAccount.belongsTo(User)
User.hasMany(Billing,{onDelete: 'CASCADE',})
Billing.belongsTo(User)
User.hasMany(Tag,{onDelete: 'CASCADE',})
Tag.belongsTo(User)
User.hasMany(Competitor,{onDelete: 'CASCADE'})
Competitor.belongsTo(User)
User.hasMany(Notification,{onDelete: 'CASCADE'})
Notification.belongsTo(User)
User.sync().then(
    () => console.log("Sync complete")
);
Reseller.sync().then(
() => console.log("Sync complete")
);
Reseller_User.sync().then(
() => console.log("Sync complete")
);
Product.sync().then(
() => console.log("Product Sync complete")
);
Competitor.sync().then(
() => console.log("Competitor Sync complete")
);
Notification.sync().then(
() => console.log("Competitor Sync complete")
);
Billing.sync().then(
() => console.log("Billing Sync complete")
);
Tag.sync().then(
() => console.log("Tag Sync complete")
);
DemoAccount.sync()
export { User, Reseller, Product, Competitor, Notification, DemoAccount, Billing, Tag };
// DemoAccount.sync({force:true}).then(
//   () => console.log("Sync complete")
// );