错误:未初始化模型:需要先将“模型”添加到Sequelize实例中,然后才能调用“调用”。(排字打字稿)

Kar*_*zul 6 model initialization sequelize.js typescript

作者

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

}
Run Code Online (Sandbox Code Playgroud)

应用程式

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();
Run Code Online (Sandbox Code Playgroud)

创建SQLRepo通话对象,以便通过这个我可以连接到数据库成功,但它显示了错误的数据库连接后。当它试图将数据插入到作者

它给我这个输出:

执行(默认):SELECT 1 + 1 AS结果数据库已连接...数据库捕获块:

Error: Model not initialized: "Model" needs to be added to
 a Sequelize instance before "call" can be called.
Run Code Online (Sandbox Code Playgroud)

Med*_*uly 10

从模型中删除构造函数调用

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

}
Run Code Online (Sandbox Code Playgroud)

您不能使用构造函数,因为它被sequelize用于内部事物

来源


Ven*_*kat -4

更改target: "es5"帮助target: "es6"我解决了这个问题。它没有记录,但存在于提供的示例中。