Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

215
Visualizações
Crear una clase de modelo base intermedia para Sequelize

Estoy usando Sequelize como ORM de datos.

Tengo una clase de usuario simple.

 import { Model } from "sequelize"; class User extends BaseModel { } export default User;

y puedo usar la clase de Usuario como este User.findByPk(1)Sequelize findByPk

Lo que quiero es una clase BaseModel que extienda la clase Sequelize Model para poder poner algunos métodos comunes en BaseClass.

Por ejemplo: en lugar de usar findByPk , me gustaría definir el método de find en BaseModel que llamará a findByPk en la clase heredada, pero no puedo encontrar ninguna solución para obtener una referencia secundaria en la clase principal.

algo así como static en PHP.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Aquí cómo puedes hacerlo:

Clase abstracta (padre):

 import { Model } from "sequelize"; export default abstract class BaseModel <T,U> extends Model<T,U> { protected myMethod(){} }

Clase de usuario (hijo):

 import { DataTypes, Model, Optional } from 'sequelize' import { sequelizeConnection } from "../helpers/databaseHelper" import BaseModel from "../models/BaseModel"; interface UserAttributes { id: number; createdAt?: Date; updatedAt?: Date; deletedAt?: Date; } export interface UserInput extends Optional<UserAttributes, "id"> {} export default class User<T=UserAttributes,U=UserInput> // <-- Pass the same generic construction as AbstractModel extends BaseModel <T,U> // <-- Here the trick implements UserAttributes{ public id!: number; public name!: string; // timestamps! public readonly createdAt!: Date; public readonly updatedAt!: Date; public readonly deletedAt!: Date; } User.init({ id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, }, // Your attributes }, { timestamps: true, sequelize: sequelizeConnection, paranoid: true })
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda