繁体   English   中英

TypeORM - 将 object 添加到 OneToMany 关系

[英]TypeORM - add object to OneToMany relations

我有一个userproject实体,它们之间具有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM