Nestjs 如何更新嵌套Js多对多关系
我在两个实体之间有一种多对多的关系。一个是Nestjs 如何更新嵌套Js多对多关系,nestjs,typeorm,Nestjs,Typeorm,我在两个实体之间有一种多对多的关系。一个是UserEntity,另一个是FamilyEntity。在此项目中,一个用户可以属于多个族,并且一个族可以有多个用户 家庭实体: @Entity() export class FamilyEntity { @PrimaryGeneratedColumn() id: number; @Column() familyName: string; @ManyToMany(() => UserEntity, us
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));
}
async updateFamily(id:number,user:user){
this.familyId=user.families;
user.families=[];
for(设i=0;i
当我尝试执行此操作时,我得到一个错误:
ER\u BAD\u FIELD\u错误:“FIELD list”中的未知列“userEntityId”
。我已经搜索了文档,没有关于如何在nest js和类型orm上更新多对多关系的参考。请提供帮助。此.userRepository.update
应该有一个UserEntity
作为第二个参数
而不是this.userRepository.update(id,user.families)
尝试:
this.userRepository.update(id,user);
或
this.userRepository.save(用户);
请注意,如果您没有在
user.families
中附加所有族,这将从联接表中删除记录。您能用我的答案解决这个问题吗?