我只能在Appync上使用GraphQL中的主键进行查询?

我只能在Appync上使用GraphQL中的主键进行查询?,graphql,aws-amplify,aws-appsync,Graphql,Aws Amplify,Aws Appsync,这个问题使我感到困惑 我尝试在graphql查询中使用非主键查询RDS表 下面是我在appsync中的两个查询的示例 query getloc{ getLocationByCounty(County: "County"){ LocationsID State County } } 这里的第二个查询起作用,并准确返回具有该LocationID的县。 第一个返回错误消息:“无法为不可为null的类型返回null:“父“位置”中的Int”(/getLocationBy

这个问题使我感到困惑

我尝试在graphql查询中使用非主键查询RDS表

下面是我在appsync中的两个查询的示例

query getloc{
  getLocationByCounty(County: "County"){
    LocationsID
    State
    County
  }
}
这里的第二个查询起作用,并准确返回具有该LocationID的县。 第一个返回错误消息:“无法为不可为null的类型返回null:“父“位置”中的Int”(/getLocationByCounty/LocationsID)”

如果我更改位置的模式并使LocationsID不可为null,则错误会消失,但它不会消失 返回null

{
  "data": {
    "getLocationByCounty": {
      "State": null
    }
  }
}
getLocationsByCounty的请求解析程序是:

"version": "2018-05-29",
"statements": ["select * from Locations where County = '$ctx.args.County'"]
以下是响应解析器:

## Raise a GraphQL field error in case of a datasource invocation error
#if($ctx.error)
    $utils.error($ctx.error.message, $ctx.error.type)
#end

$utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
这是graphQL中不允许的还是我做错了

值得注意的是,如果我只是执行以下查询:

select * from Locations where County = 'County'

在mySQL中,它完全按照预期工作。

您需要响应解析器吗?可能类似于
$util.toJson($ctx.result)
?为什么工作响应返回状态:null。。。是否存在未设置状态的重影记录?不,在数据库方面,没有重影记录。在mysql中,查询返回的正是我所期望的结果。分解器也在那里。我将把它包括在我的原始帖子中。如果将解析器更改为
$util.toJson($ctx.result)
,会发生什么?甚至只是
$ctx.result
select * from Locations where County = 'County'