У меня есть запрос следующего характера
Category1(name: $cat1){
Category2(secondName: $cat2){
secondName
}}
Моя схема такая:
const Query = new GraphQLObjectType({
name: 'Query',
fields: {
Category1: {
type: new GraphQLList(Category1Type),
args: { name },
resolve: resolveCategory1
}}
})
И тогда Category1Type определяется как:
const Category1Type = new GraphQLObjectType({
name: 'Category1',
description: '<>',
fields: () => ({
name: { type: GraphQLString },
category2: {
type: new GraphQLList(CategoryType2),
args: { secondName },
resolve: resolveCategory2
}
})
});
Для простоты предположим, что категория 2 выглядит так:
const Category2Type = new GraphQLObjectType({
name: 'Category2',
description: '<>',
fields: () => ({
name: { type: GraphQLString },
})
});
Теперь я хочу получить все элементы категории 2 в категории 1 с возможностью фильтрации, например:
Category1(name: $name){
name
category2(name: $name){
name
}}
Мои преобразователи определены так:
# Category1 resolver
function cat1resolve (root, args) {
return SELECT * from data WHERE category1_name = args.name
}
# Category2 resolver
function cat2Resolve (root, args) {
return SELECT * from data WHERE category1_name = rootargs.name and categort2_name = args.secondName }
Теперь проблема в том, что «преобразователь» для cat2Resolve не может видеть или получать rootargs.name, чтобы я мог выполнять такую фильтрацию.