#sql #typescript #sequelize.js #sequelize-typescript
Вопрос:
Вот моя модель продолжения —
import { BuildOptions, DataTypes, Model, Sequelize } from "sequelize";
import { IDBUserAttributes } from "./shared/db-table";
interface UserModel extends Model<IDBUserAttributes>, IDBUserAttributes {}
class User extends Model<UserModel, IDBUserAttributes> {}
type UserStatic = typeof Model amp; {
new (values?: object, options?: BuildOptions): UserModel;
};
const UserFactory = (sequelize: Sequelize): UserStatic => {
return <UserStatic>sequelize.define("users", {
id: {
type: DataTypes.INTEGER.UNSIGNED,
autoIncrement: true,
primaryKey: true,
unique: true,
allowNull: false,
},
email: {
type: DataTypes.STRING(320),
allowNull: false,
unique: true,
},
username: {
type: DataTypes.STRING(26),
allowNull: false,
},
password: {
type: DataTypes.STRING(255),
allowNull: false,
},
createdAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
updatedAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
});
}
export {
UserModel,
User,
UserFactory,
UserStatic,
}
Я хочу использовать модель в контроллерах. Например, вот так —
User.create()
или любым другим способом.
Как я могу получить модель? ………………………………………………………………………………………………………………………………..
Ответ №1:
Я думаю, что вы смешиваете sequelize js и sequelize ts. Я никогда не использовал sequelize с ванильным js, но я думаю, что вам не нужен пользовательский интерфейс. Класса должно быть достаточно, чтобы создать экземпляр вашей модели и создать ее.
Простой класс должен выглядеть примерно так :
@Table({ modelName: 'users' })
export class UserModel extends Model {
@Column({ primaryKey: true, allowNull: false, autoIncrement: true, type: DataTypes.INTEGER })
idUser: number;
@Column({ type: DataTypes.STRING })
firstName: string;
@Column({ type: DataTypes.STRING })
lastName: string;
}
Вы можете описать все свои столбцы как свойства своего класса с помощью столбца @и указать некоторые параметры для этой аннотации.
Затем вам просто нужно импортировать (или внедрить в зависимости от вашей платформы) в свой код, и вы сможете использовать все методы класса.
В моем случае это будет выглядеть так
UserModel.create(params)
Для получения более подробной информации вы можете найти документ здесь:
https://github.com/RobinBuschmann/sequelize-typescript#model-definition