Graphql Nestjs 添加参数到类型字段

问题描述

你好,你好吗, 过去一周我一直在学习 nestjs,并且非常享受。 我目前正在使用它和 prisma 2 来构建一个 graphql 服务器。 我想在 graphql 类型字段中添加参数以便能够过滤或 使用棱镜对结果进行排序。 明确地说,我希望能够执行以下架构

query {
  findUniqueUser(where: { id: 1 }) {
    id
    email
    name
    posts(where: { title: { contains: "a" } },orderBy: { createdAt: asc },first: 10,skip: 5) {
      id
      title
      comments(where: { contain: { contains: "a" } }) {
        id
        contain
      }
    }
  }
}

我正在使用库 @paljs/plugins 从 GraphQLResolveInfo 中提取信息并对prisma 进行查询。 我还使用库 prisma-nestjs-graphql 自动生成所有 graphql 类型定义。 有没有人尝试过使用 nestjs? 谢谢你,祝你有美好的一天

编辑:我使用的是代码优先的 graphql

编辑2: 在挖掘之后,我找到了使用 @ResolveField方法

@Query((returns) => Patient,{ nullable: true,name: "patient" })
    async getPatient(@Args() params: FindUniquePatientArgs,@Info() info: GraphQLResolveInfo) {
        const select = new prismaSelect(info).value;
        params = { ...params,...select };
        return this.prismaService.patient.findUnique(params);
    }

    @ResolveField(() => File)
    async files(@Parent() patient: Patient,@Args() params: FindManyFileArgs) {
        return patient.files;
    }

我不知道这是否是最好的方法,所以我暂时没有回答这个问题。

解决方法

我将把它留在这里作为答案

    @Query((returns) => Patient,{ nullable: true,name: "patient" })
    async getPatient(@Args() params: FindUniquePatientArgs,@Info() info: GraphQLResolveInfo) {
        const select = new PrismaSelect(info).value;
        params = { ...params,...select };
        return this.prismaService.patient.findUnique(params);
    }

    @ResolveField(() => File)
    async files(@Parent() patient: Patient,@Args() params: FindManyFileArgs) {
        return patient.files;
    }