【问题标题】: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);
}
但这不会扩展并使其非常紧密地耦合