【问题标题】:How to access @Args() in @ResolveField in nestjs如何在nestjs的@ResolveField中访问@Args()
【发布时间】:2022-01-17 16:53:21
【问题描述】:

我有一个查询,用于从数据库中获取项目,该数据库具有如下所示的用于过滤项目的 args。我如何在@resolveField 中使用相同的参数来过滤项目的表单值

@Query(() => [Project])
async getProjects(@Args() projectArgs: ProjectArgs) {
  return await this.projectsService.find(projectArgs);
}

@ResolveField("formValues", () => [FormValues])
async getFormValues(@Parent() project: Project) {
  const { id } = project;
  return await this.formsService.findValues({ projectId: id});
}

【问题讨论】:

    标签: javascript node.js nestjs


    【解决方案1】:

    我之前遇到过这个问题,通过彻底的搜索,我得出的结论是,最好的和可扩展的方法是为字段解析器本身定义参数。这是你的做法

    @ResolveField("formValues", () => [FormValues])
    async getFormValues(@Args() projectArgs: ProjectArgs) {
      ..../////
    }
    

    这样,您必须像在父查询中传递参数一样传递参数。或者,如果您不想过滤表单值,可以将它们排除在外

    您还可以使用其他方法。其中之一是将信息设置为

    @Query(() => [Project])
    async getProjects(@Args() projectArgs: ProjectArgs, @Info() info) {
      info.variableValues.some_key = value
      return await this.projectsService.find(projectArgs);
    }
    

    但这不会扩展并使其非常紧密地耦合

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 2022-12-24
      • 2022-01-05
      • 2022-06-11
      • 2020-03-24
      • 2021-11-17
      • 2014-11-09
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多