Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

214
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!