appsync dynamodb 不会 return 主分区键
appsync dynamodb won't return primary partition key
提前致谢,因为这可能是一个 101 问题 - 我无法在任何地方找到答案。
我已经设置了我认为是 AppSync 和 DynamoDB 的简单示例。
在 DynamoDB 中,我有一个 categorys
table,具有
形式的项目
{
slug: String!,
nm: String,
nmTrail: String,
...
}
所以 - 没有 id
字段。 slug
是他的主分区键,不是 null 并且应该是唯一的(在我目前加载的数据中是唯一的)。
我已经根据上述定义设置了一个简化的 AppSync 架构,并且
解析器...
{
"version": "2017-02-28",
"operation" : "GetItem",
"key" : {
"slug" : { "S" : "${context.arguments.slug}" }
}
}
查询如
query GoGetOne {
getCategory(slug: "Wine") {
nm
}
}
工作正常 - return 为 categorys
中的正确项目设置 nm
值 - 同样,我可以将 categorys
中的任何其他属性添加到 return 它们(例如 nmTrail)除了 slug
.
如果我将 slug
(主分区键,不可为 null 的字符串)添加到结果集,那么我会得到 the provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException
的 DynamoDB:AmazonDynamoDBException
。
如果我 scan/query/filter DynamoDB 中的 table 一切都很好。
大多数 AWS 示例在 'get one' 示例中使用 id: ID!
字段,并且还要求将其作为 returned 项目。
update1 响应 KD 请求
我的更新突变模式是:
type Mutation {
putCategory(
slug: String!,
nm: String,
nmTrail: String,
mainCategorySlug: String,
mainCategoryNm: String,
parentCategorySlug: String,
parentCategoryNm: String
): Category
}
没有与之关联的解析器,因此(显然)还没有对 put
任何东西使用突变 - 只是试图 get
开始批量上传数据。
/update1
我错过了什么?
我尽量重现你的 API,它对我有用。
类别 DynamoDB table
架构:
type Query {
getCategory(slug: String!): Category
}
type Category {
slug: String
nm: String
nmTrail: String
}
Query.getCategory
请求模板上的解析器:
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"slug": $util.dynamodb.toDynamoDBJson($ctx.args.slug),
}
}
Query.getCategory
响应模板上的解析器:
$util.toJson($ctx.result)
查询:
query GoGetOne {
getCategory(slug: "Wine") {
slug
nm
}
}
结果
{
"data": {
"getCategory": {
"slug": "Wine",
"nm": "Wine1-nm"
}
}
}
提前致谢,因为这可能是一个 101 问题 - 我无法在任何地方找到答案。
我已经设置了我认为是 AppSync 和 DynamoDB 的简单示例。
在 DynamoDB 中,我有一个 categorys
table,具有
{
slug: String!,
nm: String,
nmTrail: String,
...
}
所以 - 没有 id
字段。 slug
是他的主分区键,不是 null 并且应该是唯一的(在我目前加载的数据中是唯一的)。
我已经根据上述定义设置了一个简化的 AppSync 架构,并且 解析器...
{
"version": "2017-02-28",
"operation" : "GetItem",
"key" : {
"slug" : { "S" : "${context.arguments.slug}" }
}
}
查询如
query GoGetOne {
getCategory(slug: "Wine") {
nm
}
}
工作正常 - return 为 categorys
中的正确项目设置 nm
值 - 同样,我可以将 categorys
中的任何其他属性添加到 return 它们(例如 nmTrail)除了 slug
.
如果我将 slug
(主分区键,不可为 null 的字符串)添加到结果集,那么我会得到 the provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException
的 DynamoDB:AmazonDynamoDBException
。
如果我 scan/query/filter DynamoDB 中的 table 一切都很好。
大多数 AWS 示例在 'get one' 示例中使用 id: ID!
字段,并且还要求将其作为 returned 项目。
update1 响应 KD 请求
我的更新突变模式是:
type Mutation {
putCategory(
slug: String!,
nm: String,
nmTrail: String,
mainCategorySlug: String,
mainCategoryNm: String,
parentCategorySlug: String,
parentCategoryNm: String
): Category
}
没有与之关联的解析器,因此(显然)还没有对 put
任何东西使用突变 - 只是试图 get
开始批量上传数据。
/update1
我错过了什么?
我尽量重现你的 API,它对我有用。
类别 DynamoDB table
架构:
type Query {
getCategory(slug: String!): Category
}
type Category {
slug: String
nm: String
nmTrail: String
}
Query.getCategory
请求模板上的解析器:
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"slug": $util.dynamodb.toDynamoDBJson($ctx.args.slug),
}
}
Query.getCategory
响应模板上的解析器:
$util.toJson($ctx.result)
查询:
query GoGetOne {
getCategory(slug: "Wine") {
slug
nm
}
}
结果
{
"data": {
"getCategory": {
"slug": "Wine",
"nm": "Wine1-nm"
}
}
}