TypeORM 不会进一步查询嵌套对象

TypeORM does not make further query for nested object

我目前正在使用带有 typeORM 的 PostgresQL,以及 Typegraphql。使用 ManyToOne (用户有很多 orderItems)关系,我无法以某种方式查询嵌套对象关系。我设置了 logging: true 并看到没有 SELECT 查询 User 实体。但是,我认为应该根据 TypeORM 自动生成查询,给出我在实体中定义的关系。

在CartItem.tsEntity

@ObjectType()
@Entity()
export class CartItem extends BaseEntity {
  @PrimaryGeneratedColumn()
  @Field()
  id!: number;

  @Column()
  @Field()
  userId: string;

  @Field(() => User, { nullable: true })
  @ManyToOne((type) => User, (user) => user.cartItems)
  user: User;

在User.tsEntity

export class User extends BaseEntity {
  @PrimaryGeneratedColumn("uuid")
  @Field()
  id!: string;

  @OneToMany((type) => CartItem, (cartItem) => cartItem.user)
  cartItems: CartItem[];

在cartItem.tsResolver


  @Mutation(() => CartItem)
  @UseMiddleware(isAuth)
  async createCartItem(
    @Arg("input") input: CartItemInput,
    @Ctx() { req }: MyContext
  ): Promise<CartItem> {
    const newCart = await CartItem.create({
      quantity: input.quantity,
      userId: req.session.userId,
      mealkitId: input.mealkitId,
    }).save();

    return newCart;

使用以下 graphql Query,用户会 return null 即使我应该得到用户的用户名

query cartItems{
  cartItems {
    id
    quantity
    userId
    user{
      username
    }
    
  }
}

这是我收到的回复

{
  "data": {
    "cartItems": [
      {
        "id": 2,
        "quantity": 2,
        "userId": "5619ffb2-6ce2-42cf-bd5c-042f2685a045",
        "user": null
      },
      {
        "id": 1,
        "quantity": 10,
        "userId": "5619ffb2-6ce2-42cf-bd5c-042f2685a045",
        "user": null
      }
    ]
  }
}```

我自己 运行 进入这个,在我的查询解析器中我必须 leftJoinAndSelect 所有子对象才能让它工作。你没有显示你的查询解析器,而是像

async cartItems(): Promise<CartItem[]> {
    return await getConnection()
        .createQueryBuilder(CartItem, 'cartItem')
        .leftJoinAndSelect('cartItem.user', 'user', 'cartItem.userId = user.id')
        .getMany()
}