【发布时间】:2019-11-25 22:24:03
【问题描述】:
我有两种类型:待办事项和评论。
type Todo {
id: ID!
name: String
description: String
priority: Int
status: TodoStatus
comments: [Comment]
}
type Comment {
todoid: ID!
commentid: String!
content: String
}
然后我有一个 Query getTodo 但问题是如果传递的字符串在 Comment 的内容中,我想包含一个过滤评论(子)的内容 arg。
getTodo(id: ID!, content: String!): Todo
我尝试将解析器附加到 cmets(在 Todo 下)。如果我在这里添加一个过滤器,我将如何获得在 getTodo(id: ID!, content: String!) 中传递的 ctx.args.content。
{
"version" : "2017-02-28",
"operation" : "Query",
"query" : {
## Provide a query expression. **
"expression": "todoid = :id",
"expressionValues" : {
":id" : {
"S" : "${ctx.args.id}"
}
}
},
"filter": {
"expression": "contains(content, :content)",
"expressionValues" : {
":content": {
"S": "${ctx.args.content}"
}
}
}
}
或者如果我删除这个过滤器并保持这样:
{
"version" : "2017-02-28",
"operation" : "Query",
"query" : {
## Provide a query expression. **
"expression": "todoid = :id",
"expressionValues" : {
":id" : {
"S" : "${ctx.args.id}"
}
}
}
}
我将如何修改 getTodo Resolver 以获取 cmets(内容包含传递的字符串)? 我可以这样做吗(访问如果 cmets.content 包含传递的内容字符串 args):
{
"version" : "2017-02-28",
"operation" : "Query",
"query" : {
## Provide a query expression. **
"expression": "id = :id",
"expressionValues" : {
":id" : {
"S" : "${ctx.args.id}"
}
}
},
"filter": {
"expression": "contains(comments.content, :content)",
"expressionValues" : {
":content": {
"S": "${ctx.args.content}"
}
}
}
}
【问题讨论】:
-
你试过
${context.source.content}吗?这应该使您可以在嵌套解析器中访问父参数。
标签: aws-appsync resolver