【问题标题】:How to Update a Nest Js Many To Many Relation如何更新 Nest Js 多对多关系
【发布时间】:2021-07-26 22:45:05
【问题描述】:

我有两个实体之间的多对多关系。一个是UserEntity,另一个是FamilyEntity。在这个项目中,一个用户可以属于多个家庭,一个家庭可以有多个用户。

家庭实体:

@Entity()
export class FamilyEntity {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    familyName: string;

    @ManyToMany(() => UserEntity, user => user.families,{})
    public users: UserEntity[];


}

用户实体:

@Entity()
export class UserEntity {

    @PrimaryGeneratedColumn()
    public id?: number;

    @Column()
    public name: string;

    @Column({ unique: true })
    public username: string; 

    @Column({ unique: true })
    public password: string;

    @BeforeInsert()
    emailToLowerCase() {
        this.email = this.email.toLowerCase();
    }
    @Column({ unique: true })
    public email: string;

    @Column({ type: 'enum', enum: UserRole, default: UserRole.USER })
    public role: UserRole;

    @ManyToMany(() => FamilyEntity, family => family.users, {
        cascade: true,
        eager:true
    })
    @JoinTable()
    public families: FamilyEntity[];


}

我可以毫无问题地成功保存和更新用户和家庭,但是这两个实体之间的关系让我很难过。假设我想更新一个用户以在我尝试代码的字段中包含一个家庭:

 async updateFamily(id: number, user:User) {
        this.familyIds = user.families;
        user.families = [];

        for (let i = 0; i < this.familyIds.length; i++) {
            this.families = await this.familyRepository.findOne(this.familyIds[i]);
            user.families.push(this.families);
        }
        return from(this.userRepository.update(id, user.families));
        

    }

当我尝试执行此操作时,出现错误:ER_BAD_FIELD_ERROR: Unknown column 'userEntityId' in 'field list'。我已经搜索了文档,但没有关于如何更新 nest-js 和 type-orm 上的多对多关系的参考。请协助。

【问题讨论】:

    标签: nestjs typeorm


    【解决方案1】:

    this.userRepository.update 应该有一个 UserEntity 作为第二个参数。

    而不是this.userRepository.update(id, user.families)

    试试:

    this.userRepository.update(id, user);
    

    this.userRepository.save(user);
    

    请注意,如果您没有附加 user.families 中的所有家庭,这将从连接表中删除记录

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 2022-01-23
      • 2021-07-23
      • 1970-01-01
      • 2022-01-27
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多