我有一个从数据库获取项目的查询,其参数如下所示,用于过滤项目。我如何在 @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});
}
最佳答案
我之前就遇到过这个问题,通过彻底的搜索,我得出的结论是,最好的、可扩展的方法是为字段解析器本身定义参数。下面是具体操作方法
@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);
}
但这不会扩展并使其紧密耦合
关于javascript - 如何在nestjs中访问@ResolveField中的@Args(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70737757/