1

我正在尝试构建一个接受集合的突变。GraphQL 服务器是用 c# .net core 编写的,并使用 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"
      }
    }
  ]
}

如果PupilReportInputTypePupilMetricCollections删除该字段并且对变异变量进行了类似调整,则查询的行为与预期相同(不是错误)。同样,如果我修改变量输入并且PupilReportInputType使该字段只是PupilMetricCollectionInputType而不是ListGraphType<PupilMetricCollectionInputType>那么我就可以让它全部工作。

我如何传递收藏PupilMetricCollectionInputType?我需要某种 ListGraphInputType 吗?

4

1 回答 1

1

我是 graphQL 的新手,因此我认为我犯的错误在我的代码中。事实上,我收到的回复信息提供了我需要的所有信息。我发送的可变数据确实格式错误。

我发了这个;

{
  "pupilReport": {
    "pupilId" : 5,
    "pupilMetricCollections": {
      "pupilMetricCollection" : {
         "pupilId" : 5
      }
    }
  }
}

但是,StudentMetricCollections 是一个数组类型;所以我需要使用数组语法。以下工作正常;

{
  "pupilReport": {
    "pupilId" : 5,
    "pupilMetricCollections": [
      {
        "pupilId" : 1
      },
      {
        "pupilId" : 2
      }
    ]
  }
}

我最大的收获是相信 GraphQL 错误响应,不要忘记寻找显而易见的东西!

于 2019-05-01T06:53:01.137 回答