Soy nuevo en el uso de la API de graphql, así que tal vez lo que estoy preguntando es algo fácil de hacer.
quiero filtrar datos anidados en mi esquema, este es mi esquema con typeorm, todo está bien con las relaciones y sé cómo manejar el problema N + 1.
@ObjectType() @Entity() export class Product extends BaseEntity { @Field() @PrimaryGeneratedColumn() Id_Product!: Number; @Field() @Colum() Name: String; @Field(() => [Product _Photo], { nullable: true }) @OneToMany(() => Product _Photo, product_photo => product _photo .Photo) Product _Photo: Product _Product []; @Field(() => [Category], { nullable: true }) @OneToMany(() => Category, category=> category.Category ) Category: Category []; @Field() @CreateDateColumn() CreatedAt: Date; @Field() @CreateDateColumn() UpdateAt: Date; }así que ahora, para manejar la relación de uno a muchos, necesito hacer que los resolutores de campo obtengan los datos, este es mi resolutor
@Resolver(Product) export class ProductResolver { @FieldResolver(() => Product) async Product_Photo(@Root() Product: Product) { return await Product_Photo.find({ Id_Product: Product.Id_Product}); } @FieldResolver(() => Product) async Category(@Root() Product: Product) { return await Category.find({ Id_Product: Product.Id_Product}); } @Query(() => [Product], { nullable: true }) async GetProduct(): Promise<Product[]> { // need to filter sort and paginate the product // FILTER BY CATEGORY // Product.find().filter({ Category: ['Art', 'Food'] }) return await Product.find();; } }entonces puedo hacer un filtro en javascript o con typeorm, el problema es que el campo de categoría está vacío hasta que se ejecuta la consulta GetProduct y en el resolver archivado solo puedo obtener la categoría de un producto, para filtrar los productos por categoría necesito hacer después de que se ejecuten los solucionadores de campo, ¿hay alguna manera de hacer esto? Si es así, puedo hacer una ordenación por filtro y paginar todos los datos y enviar los datos perfectamente.
si no es una forma de obtener los datos después de que se ejecutan todos los solucionadores de campo, ¿cómo puedo hacer esto de otra manera? No quiero ejecutar una o varias consultas dentro de la consulta GetProduct. camino