Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.5K
Vistas
TypeORM: Guardar entidad con relación ManyToMany con campo personalizado no se guarda correctamente

Tengo una relación ManyToMany de usuarios y proyectos de la siguiente manera:

 // project.entity.ts @Entity() export class Project extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() name: string; @OneToMany(type => ProjectUser, projectUser => projectUser.project) projectUsers: ProjectUser[]; @CreateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', readonly: true }) createdAt: Date; @UpdateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' }) updatedAt: Date; @DeleteDateColumn({ type: 'timestamp' }) deletedAt: Date; }
 // user.entity.ts @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() email: string; @Column() password: string; @OneToMany(type => ProjectUser, projectUser => projectUser.user) projectUsers: ProjectUser; @CreateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', readonly: true }) createdAt: Date; @UpdateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' }) updatedAt: Date; @DeleteDateColumn({ type: 'timestamp' }) deletedAt: Date; }
 // project_user.entity.ts @Entity() export class ProjectUser extends BaseEntity{ @PrimaryGeneratedColumn() id: number; @Column() projectId: number; @Column() userId: number; @Column() isUserCreator: boolean; @ManyToOne(type => Project, project => project.projectUsers) @JoinColumn() project: Project; @ManyToOne(type => User, user => user.projectUsers) @JoinColumn() user: User; }

Cuando trato de guardar un nuevo proyecto, el nuevo registro ProjectUser no se guarda.

 // project.service.ts async create(project: DeepPartial<Project>): Promise<Project> { ---> project { name: 'project1', projectUsers: [{userId: 1, isUserCreator: true}] const projectToSave = Project.create(project) projectToSave.projectUsers = ProjectUser.create(project.projectUsers) return await projectToSave.save(); }

¿Alguna idea de por qué no puedo guardar el registro en la tabla relacionada?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Solo creó instancias projectUsers pero no las guardó.

Use el siguiente código para guardar todo el project y projectUsers :

 const projectToSave = Project.create(project); await projectToSave.save(); const projectUsers = ProjectUser.create(project.projectUsers); projectUsers.forEach(p => p.project = projectToSave); await projectUsers.save(projectUsers); return projectToSave;

O

 const projectUsers = await ProjectUser.save(ProjectUser.create(project.projectUsers)); const projectToSave = Project.create(project); projectToSave.projectUsers = projectUsers; return await projectToSave.save();

Otra solución Puede configurar la opción de cascade en su entidad para guardar automáticamente.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda