Возможно ли из DataFetchingEnvironment получить значение поля родителя?

У меня реализован сервис с GraphQL на spring-boot-starter-graphql

Есть простая схема, где поле c зависит от id B:

type A {
  id: Int!
  b: [B]
}

type B {
  id: Int!
  с: C
}

type C {
  с: C //Зависит от id type B
}

Реализован контроллер и даталоудер:

@QueryMapping
public A getA(DataFetchingEnvironment environment) {
    A a = repo.getA();
    int index = 0;
    for (B b : a.getB()) {
        environment.getGraphQlContext().put(index, b.getId());
        index++;
    }
    return A;
}

@SchemaMapping(field = "c", typeName = "C")
public C getC(DataFetchingEnvironment environment) {
    Integer currentIndex = environment.getExecutionStepInfo().getParent().getParent().getPath().getSegmentIndex();
    C c = repo2.getC(environment.getGraphQlContext().get(currentIndex));
    return c;
}

Что бы получить ID типа B в будующем я в QueryMapping в контекст записываю мапу (index, id): Пример: (0,123) (1,247)

В SchemaMapping у меня доступен только объект C и я ничего не знаю про объект B. Единственное что мне получилось достать - это его индекс в списке , поэтому я вытаскиваю id B из контекста.

Соответственно вопрос. Могу ли я как то в DataFetchingEnvironment достать value родителя, что бы не играться так с контекстом?


Ответы (0 шт):