[英]TypeORM - add object to OneToMany relations
我有一个user
和project
实体,它们之间具有OneToMany
关系,
用户实体.ts
@ManyToOne(() => Project, pro => pro.members, {
nullable: true
})
@JoinColumn({
name: 'userId',
})
member: Project;
项目实体.ts
@OneToMany(() => User, user => user.member)
members: User[]
function 将用户添加到项目:
async addMemberToProject(projectId: number, memberEmail: string): Promise<void> {
const project = await this.conn.getRepository(Project).findOne({
where: {
id: projectId
}
}).catch(() => {
throw new BadRequestException("Project not found!");
});
const user = await this.getUserByEmail(memberEmail).catch(() => {
throw new BadRequestException("User not found!");
})
if(user !== null) {
project.members.push(user);
await this.conn.getRepository(Repository).save(project).catch(() => {
throw new BadRequestException("Member not added to project!");
});
}
}
为什么当我尝试将用户添加到项目时,我的编译器会抛出我:
Cannot read property 'push' of undefined
我做错了什么? 也许我的数据库逻辑不好? (用户可以在很多项目中,项目可以有很多用户),有人可以帮我吗? 谢谢你的帮助!
@JoinColumn
上的user.entity
看起来不对,应该命名为: projectId
,假设Project.entity
的主键是projectId
。
您出错的原因是您需要添加relations: ['members']
到项目findOne()
const project = await this.conn.getRepository(Project).findOne({
where: {
id: projectId
},
relations: ['members']
})
没有这个,TypeORM 不会填充“project.members”:project.members 未定义,因此project.members.push(user)
会导致“未定义”错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.