I am trying to add a model with sequelize-typescript:
type AppMetaDataAttributes = {
id: string;
name: string;
version: string;
createdAt: string;
updatedAt: string;
};
type AppMetaDataCreationAttributes = Optional<AppMetaDataAttributes, 'id'>;
@Table
class AppMetaData extends Model<AppMetaDataAttributes, AppMetaDataCreationAttributes> {
@Column
id: string;
@Column
name: string;
@Column
version: string;
@Column({ field: 'created_at' })
createdAt: string;
@Column({ field: 'updated_at' })
updatedAt: string;
constructor(id: string, name: string, version: string, createdAt: string, updated: string) {
super();
this.id = id;
this.name = name;
this.version = version;
this.createdAt = createdAt;
this.updatedAt = updated;
}
}
MySqlInstance.addModels([AppMetaData]);
export default AppMetaData;
But it is giving me this error in the line MySqlInstance.addModels([AppMetaData]);
:
No overload matches this call.
The last overload gave the following error.
Type 'typeof AppMetaData' is not assignable to type 'string | ModelCtor<Model<any, any>>'.
Type 'typeof AppMetaData' is not assignable to type 'ModelCtor<Model<any, any>>'.
Type 'typeof AppMetaData' is not assignable to type 'new () => Model<any, any>'.
Types of construct signatures are incompatible.
Type 'new (id: string, name: string, version: string, createdAt: string, updated: string) => AppMetaData' is not assignable to type 'new () => Model<any, any>'.ts(2769)
sequelize.d.ts(16, 5): The last overload is declared here.
I am only following the documentation provided in the official doc here but not sure what went wrong?
The constructor
of the AppMetaData
model class is unnecessary.
Working example:
import { Optional } from 'sequelize';
import { Column, Model, Table, Sequelize } from 'sequelize-typescript';
const sequelize = new Sequelize({
database: 'some_db',
dialect: 'sqlite',
username: 'root',
password: '',
storage: ':memory:',
models: [__dirname + '/models'],
});
type AppMetaDataAttributes = {
id: string;
name: string;
version: string;
createdAt: string;
updatedAt: string;
};
type AppMetaDataCreationAttributes = Optional<AppMetaDataAttributes, 'id'>;
@Table
class AppMetaData extends Model<
AppMetaDataAttributes,
AppMetaDataCreationAttributes
> {
@Column
id: string;
@Column
name: string;
@Column
version: string;
@Column({ field: 'created_at' })
createdAt: string;
@Column({ field: 'updated_at' })
updatedAt: string;
}
sequelize.addModels([AppMetaData]);