Моя схема GraphQL определяется как:
type Query {
getEntity(id: Int!): Entity
getEntityUsers(entityId: Int!, statusId: Int): [User]
}
type Entity {
id: Int!
name: String!
email: String!
logo: String
createdAt: DateTime!
updatedAt: DateTime!
users(statusId: Int): [User]
}
Как видите, у меня есть два способа получить пользователей для объекта Entity
. В данный момент для моего запроса работает метод getEntityUsers
root resolver. Этот запрос выглядит так:
query getEntityUsers($entityId: Int!, $statusId: Int) {
users: getEntityUsers(entityId: $entityId, statusId: $statusId) {
...
}
}
.. с переменными:
{
entityId: 1,
statusId: 2
}
Есть ли способ заставить другой путь работать, позволив мне перейти на statusId
? Прямо сейчас запрос выглядит так:
query getEntity($id: Int!) {
entity: getEntity(id: $id) {
...
users (statusId: 2) {
...
}
}
}
Это очевидно работает с переменными:
{
id: 1
}
Но что, если я захочу использовать этот второй метод и изменить statusId
? Можно ли передать statusId
, если он не определен в корневом преобразователе?
Я пробовал запрос:
query getEntity($id: Int!) {
entity: getEntity(id: $id) {
...
users (statusId: $statusId) {
...
}
}
}
.. с переменными:
{
id: 1,
statusId: 2
}
Но я просто получаю сообщение об ошибке: Variable "$statusId" is not defined by operation "getEntity".
Есть ли еще способ сделать это?