Graphql 插入TypeForm后创建相关实体

Graphql 插入TypeForm后创建相关实体,graphql,typeorm,Graphql,Typeorm,我有两个实体: 使用者 宣传片 我想创建一个促销实体, 每次创建/插入用户实体时,它都与用户实体具有oneToOne关系 我是打字新手,所以我不确定实现这一点的最佳方法是什么 我尝试过使用订阅服务器,但似乎无法实现所需的功能。 另一种选择是在GraphQL解析器中执行此操作,但对我来说这似乎很混乱 尝试执行此操作时,最佳做法是什么?您可以使用完全类型化来保存所有必需的数据,但请确保已创建实体,且实体之间的连接正确: //宣传片 @Index() @OneToOne(() => User,

我有两个实体:

  • 使用者
  • 宣传片
  • 我想创建一个促销实体, 每次创建/插入用户实体时,它都与用户实体具有oneToOne关系

    我是打字新手,所以我不确定实现这一点的最佳方法是什么

    我尝试过使用订阅服务器,但似乎无法实现所需的功能。 另一种选择是在GraphQL解析器中执行此操作,但对我来说这似乎很混乱


    尝试执行此操作时,最佳做法是什么?

    您可以使用完全类型化来保存所有必需的数据,但请确保已创建实体,且实体之间的连接正确:

    //宣传片

    @Index()
    @OneToOne(() => User, user => user.promo)
    @JoinColumn()
    user: User
    
    我已经将@JoinColumn添加到Promo中,希望Promo实体在表中有userId

    //User.ts

    @OneToOne(() => Promo, promo => promo.user)
    promo: Promo
    
    例如,在存储库中,您可以使用事务操作保存用户,并在保存此用户后立即使用其他所需的促销详细信息:

    saveUser(user: User) {
      return getManager().transaction(async (manager) => {
        const result = await manager
          .getRepository(User)
          .createQueryBuilder()
          .insert()
          .values(user)
          .execute()
        
        // check on result emptiness
    
        const createdUser = await manager
          .getRepository(User)
          .createQueryBuilder()
          .where('id=:id',{id: result.identifiers[0].id})
          .getOne()
    
        await manager
          .getRepository(Promo)
          .createQueryBuilder()
          .insert()
          .values({user: createdUser})
          .execute()
      })
    }
    
    它将保存在第一个用户的一个事务中,并在与该用户进行促销后保存