Я пытаюсь понять Graph QL и у меня работает базовый пример.например, если я передам этот запрос, я получу обратно совпадение с идентификатором.
query {
person(id:"4090D8F6-EFC4-42CD-B55C-E2203537380C")
{
firstname
surname
}
}
Мои данные - это просто статический набор тестовых данных, и теперь я хотел бы вернуть всех пользователей, которые имеютимя совпадает с тем, что я предоставляю.Я сбит с толку, как бы я написал это, так как проверка нуля id, кажется, останавливает меня!?
Мой PersonQuery выглядит так:
public class PersonQuery : ObjectGraphType<Person>
{
public PersonQuery(ShoppingData data)
{
Field<PersonType>(
"person",
description: "A Person",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<IdGraphType>>
{
Name = "id",
Description = "The id of the person"
}),
resolve: ctx =>
{
return data.GetById(ctx.GetArgument<Guid>("id"));
});
}
}
Как бы я сделал так, чтобы я мог вернутьсясписок людей по имени, не знаю, если это правильный запрос ниже, но хотел бы получить некоторую помощь о том, как я мог бы сделать это вместе с примером рабочего идентификатора.
query {
person
{
firstname: ("Andrew")
surname
}
}
Обновление ответа - предоставлено DavidG
Я сделал так, как было упомянуто, поэтому мой PersonQuery теперь выглядит следующим образом
public class PersonQuery : ObjectGraphType<Person>
{
public PersonQuery(ShoppingData data)
{
Field<PersonType>(
name: "person",
description: "A Person",
arguments: new QueryArguments(
new QueryArgument<IdGraphType>
{
Name = "id",
Description = "The id of the person"
}),
resolve: ctx =>
{
return data.GetById(ctx.GetArgument<Guid>("id"));
});
Field<ListGraphType<PersonType>>(
name : "persons",
description: "Persons",
arguments: new QueryArguments(
new QueryArgument<StringGraphType>
{
Name = "firstname",
Description = "The firstname of the person"
},
new QueryArgument<StringGraphType>
{
Name = "surname",
Description = "The surname of the person"
}),
resolve: ctx =>
{
var firstName = ctx.GetArgument<String>("firstname");
var surname = ctx.GetArgument<String>("surname");
return data.Filter(firstName, surname);
});
}
}
Затем я мог бы выполнить запрос graphql следующим образом:
query {
persons(firstname: "Andrew", surname: "P")
{
firstname
surname
}
}