我正在尝试为相关实体编写解析器。
以下是我的架构的外观。
type User{
id:ID!
name: String!
posts:[Post] #Resolver 1
}
type Post{
id:ID!,
title: String!
body: String!
}
type CreatePostInput{
id:ID!,
title: String!
body: String!
}
type mutation{
addUserPost(userid:ID!, input:CreatePostInput!): Post
}
现在我为帖子添加了一个解析器(请参阅#resolver 1)
{
"version" : "2017-02-28",
"operation" : "Scan",
"key": {
"userid" : { "S" : "${context.source.id}" }
},
}
现在我为变种addUserPost添加了一个解析器
{
"version" : "2017-02-28",
"operation" : "PutItem",
"key": {
"userid" : { "S" : "${context.arguments.userid}" },
"input" : $util.dynamodb.toDynamoDBJson(${context.arguments.input})
}
}
现在我运行查询
mutation addnewposttest{
addChapterToCourse(addUserPost:"c85a0508-ee0e-4ad8-8629-34880e1c6d74",
input:{
title:"Demo",
body:"Test Body",
id: "c85a0508-c85a0-508c-85a-0508"
}){
id
}
}
我得到DynamoDB:AmazonDynamoDBException,因为一个或多个参数值无效:缺少项目中的密钥ID(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ValidationException;请求ID:XXXXXXXXXXXX
我尝试更改第二个解析器的数据源,但没有运气。除了this之外,我没有在AWS中找到任何好的文档,但这涉及简单的字符串数据类型,而不是对象类型集合。
有人可以帮助我理解,如何处理解析器中的关系?感谢
答案 0 :(得分:0)
正如我评论的那样,你有一些更新。
但主要问题是addUserPost的解析器模板包含userid
,但看起来您需要将其更改为id
。看起来您的用户类型或帖子类型没有名为userid
答案 1 :(得分:0)
我指的是两个单独的数据表,并将数据存储在两个表中,我需要使用BatchUpdate项并指定表名。但是,我无法在我的用例中执行此操作,我必须在一个表中插入并在另一个表中更新。
最后,我最终在另一个集合中复制了Id,并在其上构建了一个索引。
这是我最终架构的样子
type User{
id:ID!
name: String!
posts:[Post] #Resolver 1 -
}
type Post{
id:ID!,
userId:ID!# I will look for source.id on this field
title: String!
body: String!
}
感谢大家投球!