sequelize/sequelize-typescript

ModelNotInitializedError: Model not initialized: Member "create" cannot be called [Model] needs to be added to a Sequelize instance.

JoshLeez opened this issue · 2 comments

Versions

  • sequelize: 6.37.1
  • sequelize-typescript: 2.1.6
  • typescript: 5
  • I'm submitting a ...

[X] bug report
[ ] feature request

Issue
ModelNotInitializedError: Model not initialized: Member "create" cannot be called. "Todo" needs to be added to a Sequelize instance.

Context
I have 1 simple model that is Todo with name of the file Todo.model.ts.

import {Table, Column, Model, DataType, BeforeUpdate} from 'sequelize-typescript';

@Table({
    timestamps: true,
    tableName: "todos",
    modelName: "Todo",
})

export default class Todo extends Model{
    @Column
       declare list: string; 
    
}       

And this is my Sequelize Configuration.

import { Sequelize } from "sequelize-typescript";
import  Todo  from "./models/Todo.model";


const database = new Sequelize({
    host : process.env.DB_HOST,
    database: process.env.DB_NAME,
    dialect: 'mysql',
    username: process.env.DB_USER,
    password: process.env.DB_PASS,   
    models: [Todo], 
    sync: { force: true },
});


(async () => {
  try {
     await database.authenticate();
     console.log('Database is connected');
     database.addModels([Todo])
     await database.sync({ alter: true, force: true });
     console.log('Models synchronized successfully.');
      await Todo.create({
      list: 'My Todo List',
    });
   } catch (err) {
      console.error('Error during database setup:', err);
   }
 })();

 export default database

everytime if I try to make an api call it will always the error ModelNotInitializedError: Model not initialized: Member "create" cannot be called. "Todo" needs to be added to a Sequelize instance. And I don't know why.

@JoshLeez Try to change property definition from

@Column
declare list: string; 

to

@Column({ type: DataType.STRING })
public list: string;

@Mauzzz0 Sorry for the late response; didn't know someone answered. I’ve been working on fixing it for weeks and eventually gave up. I ended up switching to Prisma, which works perfectly. Thank you for your help; I still appreciate it.