【发布时间】: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 上的多对多关系的参考。请协助。
【问题讨论】: