【问题标题】:Update request ManyToMany NestJS更新请求多对多 NestJS
【发布时间】:2020-01-22 11:54:46
【问题描述】:

我对编码很陌生,我正在使用 nestjs 和 PostegreSql 创建一个应用程序 每当我尝试更新某些内容时,都会出现错误。

我有具有@ManyToMany 关系的实体,如果我删除这些关系,更新将正常工作。 但是如果我让@ManyToMany 关系,它就行不通了

错误信息:

[Nest] 46879   - 09/21/2019, 7:38 PM   [ExceptionsHandler] column "entrainementsId" of relation "entrainements" does not exist +639401ms
[0] QueryFailedError: column "entrainementsId" of relation "entrainements" does not exist
[0]     at new QueryFailedError (/Users/damien/Desktop/projetAngular/rowing/rowing-back-end/node_modules/typeorm/error/QueryFailedError.js:11:28)
[0]     at Query.callback (/Users/damien/Desktop/projetAngular/rowing/rowing-back-end/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:176:38)
[0]     at Query.handleError (/Users/damien/Desktop/projetAngular/rowing/rowing-back-end/node_modules/pg/lib/query.js:142:17)
[0]     at Connection.connectedErrorMessageHandler (/Users/damien/Desktop/projetAngular/rowing/rowing-back-end/node_modules/pg/lib/client.js:194:17)
[0]     at Connection.emit (events.js:197:13)
[0]     at Socket.<anonymous> (/Users/damien/Desktop/projetAngular/rowing/rowing-back-end/node_modules/pg/lib/connection.js:126:12)
[0]     at Socket.emit (events.js:197:13)
[0]     at addChunk (_stream_readable.js:288:12)
[0]     at readableAddChunk (_stream_readable.js:269:11)
[0]     at Socket.Readable.push (_stream_readable.js:224:10)

EntrainementEntity


@Entity()
export class Entrainements extends HistoriqueEntity {
    @Column()
    name: string;

    @ManyToMany( () => Categories, {cascade: true} )
    @JoinTable()
    category: Categories[];

    @Column()
    distance: number;

    @Column()
    start: number;

    @Column()
    comments: string;

    @Column()
    warmUp: string;

    @Column()
    cadence: string;

    @ManyToOne(type => Season, season => season.name)
    season: Season;

    @Column()
    rest: string;

    @ManyToOne(type => Roles, role => role.entrainements)
    role: Roles;

    @ManyToMany( () => Exercices, {cascade: true} )
    @JoinTable()
    exercices: Exercices[];
}

练习实体:

@Entity()
export class Exercices extends HistoriqueEntity {
    @Column()
    name: string;

    @Column()
    description: string;

    @ManyToOne(type => TypeExercices, typeExercices => typeExercices.exercices)
    typeExercices: TypeExercices;

    @ManyToMany(type => Entrainements, entrainements => entrainements.exercices)
    entrainements: Entrainements[];
}

类别实体


@Entity()
export class Categories extends HistoriqueEntity {
    @Column()
    name: string;

    @ManyToMany(type => Entrainements, entrainements => entrainements.category)
    entrainements: Entrainements[];

}

EntrainementController

    @Put(':id/update')
    async update(@Param('id') id, @Body() entrainementsData: Entrainements): Promise<UpdateResult> {
        entrainementsData.id = Number(id);
        return this.service.updateTraining(entrainementsData);
    }

培训服务

   async updateTraining(entrainement: Entrainements): Promise<UpdateResult> {
        return await this.entrainementsRepository.update(entrainement.id, entrainement);
    }

【问题讨论】:

    标签: node.js postgresql nestjs typeorm


    【解决方案1】:

    你应该定义相反的绑定:

    @ManyToMany( () => Exercices, (exercices) => exercices.entrainements, {cascade: true} )
    @JoinTable()
    exercices: Exercices[];
    

    【讨论】:

      猜你喜欢
      • 2020-05-03
      • 2022-01-25
      • 2019-10-28
      • 2017-09-09
      • 2013-04-05
      • 2020-08-29
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多