Как передать коллекцию в мутацию GraphQL с GraphQL.Net и C#?
Я пытаюсь создать мутацию, которая принимает коллекцию. Сервер GraphQL написан на ядре C# .net и использует GraphQL.Net.
Это мой тип ввода;
public class PupilReportInputType : InputObjectGraphType<PupilReport>
{
public PupilReportInputType()
{
Name = "PupilReportInput";
Field(pr => pr.PupilId);
Field(pr => pr.PupilMetricCollections, type: typeof(ListGraphType<PupilMetricCollectionInputType>));
}
}
Используя GraphiQL, я попытался опубликовать следующую мутацию;
mutation getPupilReportText($pupilReport: PupilReportInput!) {
getPupilReportText(pupilReport: $pupilReport)
}
со следующей переменной;
{
"pupilReport": {
"pupilId" : 5,
"pupilMetricCollections": {
"pupilMetricCollection" : {
"pupilId" : 5
}
}
}
}
Ответ я получаю;
{
"errors": [
{
"message": "Variable '$pupilReport.pupilMetricCollections[0]' is invalid. Unable to parse input as a 'PlayerMetricCollectionInput' type. Did you provide a List or Scalar value accidentally?",
"extensions": {
"code": "INVALID_VALUE"
}
}
]
}
Если PupilReportInputType
имеет PupilMetricCollections
поле удалено и переменные мутации скорректированы аналогично, тогда запрос ведет себя как ожидалось (не ошибки). Точно так же, если я изменяю переменную ввода и PupilReportInputType
так что поле просто PupilMetricCollectionInputType
скорее, чем ListGraphType<PupilMetricCollectionInputType>
тогда я смогу заставить все это работать.
Как передать коллекцию на PupilMetricCollectionInputType
? Нужно ли мне какой-то ListGraphInputType?
1 ответ
Я был новичком в GraphQL и поэтому предположил, что ошибка, которую я сделал, была в моем коде. По правде говоря, ответное сообщение, которое я получал, давало мне всю необходимую информацию; переменные данные, которые я отправлял, действительно были искажены.
Я отправил это;
{
"pupilReport": {
"pupilId" : 5,
"pupilMetricCollections": {
"pupilMetricCollection" : {
"pupilId" : 5
}
}
}
}
Однако pupilMetricCollections является типом массива; поэтому мне нужно было использовать синтаксис массива. Следующее работало нормально;
{
"pupilReport": {
"pupilId" : 5,
"pupilMetricCollections": [
{
"pupilId" : 1
},
{
"pupilId" : 2
}
]
}
}
Мой большой вывод здесь - доверять ответам об ошибках GraphQL и не забывать искать очевидное!