Ошибка: модель не инициализирована: модель необходимо добавить в экземпляр Sequelize, прежде чем можно будет вызвать вызов. (Продолжение машинописного текста)

Автор.ts

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

@Table
export class Author extends Model<Author> {

constructor(){
    super();
}

@Column(DataType.STRING)
fname: string

@Column(DataType.STRING)
lname: string

}

App.ts

import {Sequelize} from 'sequelize-typescript';
import { customer } from './model/customer';
import { Author } from './model/Author';

export  class SQLRepo {

     repo:Sequelize = null;

     constructor(){
         this.connectDb();
     }

  connectDb(): any {

    this.repo =  new Sequelize({
        database: 'postgres',
        dialect: 'postgres',
        host: 'localhost',
        username: 'postgres',
        password: 'xxxxx',
        storage: 
               'D:/Sequalize/assosiation/database.sqlite',
        modelPaths: [__dirname + '/models'],
        define: {
            underscored: false,
            freezeTableName: false,
            timestamps: false
        }
     });

     this.repo.addModels([Author])

     this.repo.
     authenticate().
     then(function(){
         console.log("database connected ...")

         new Author({fname: 'karim' , lname: 'mirazul'}).save();

     }).
     catch(function(error){
         console.log("Database catch block : "+ error)
     })
   }
}
new SQLRepo();

создайте объект вызова SQLRepo, чтобы с его помощью я мог успешно подключиться к базе данных, но он показывает ошибку после подключения к базе данных. Когда он пытается вставить данные в Author

это дает мне этот вывод:

Выполнение (по умолчанию): SELECT 1+1 AS результирующая база данных подключена ... Блок перехвата базы данных:

Error: Model not initialized: "Model" needs to be added to
 a Sequelize instance before "call" can be called.

person Karim Mirazul    schedule 05.01.2018    source источник
comment
попробуйте удалить modelPaths из параметра конфигурации, который вы передаете new Sequelize. Я думаю, что это избыточно и может вызвать проблему.   -  person Naor Levi    schedule 03.12.2019


Ответы (2)


Удалить вызов конструктора из модели

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

@Table
export class Author extends Model<Author> {

  // constructor(){
  //     super();
  // }

  @Column(DataType.STRING)
  fname: string

  @Column(DataType.STRING)
  lname: string

}

Вы не можете использовать конструктор, так как он используется сиквелом для внутренних вещей.

источник

person Medet Tleukabiluly    schedule 02.12.2019

Изменение target: "es5" на target: "es6" помогло мне решить эту проблему. Он не задокументирован, но присутствует в приведенном примере .

person Venkat    schedule 05.02.2018
comment
Пробует это решение, и проблема остается той же. - person Jeff Tian; 28.11.2019