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



我目前正在使用带有typeORM的PostgresQL以及Typegraphql。对于ManyToOne(用户有许多orderItems)关系,不知何故,我无法查询嵌套对象关系。我设置了logging: true,发现User实体没有SELECT查询。然而,我认为应该根据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;

在用户的Entity

export class User extends BaseEntity {
@PrimaryGeneratedColumn("uuid")
@Field()
id!: string;
@OneToMany((type) => CartItem, (cartItem) => cartItem.user)
cartItems: 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;

使用下面的graphqlQuery,即使我应该得到用户的用户名,用户也会返回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()
}

最新更新