У меня есть два типа: Todo и Комментарий.
type Todo {
id: ID!
name: String
description: String
priority: Int
status: TodoStatus
comments: [Comment]
}
type Comment {
todoid: ID!
commentid: String!
content: String
}
Затем у меня есть запрос getTodo, но я хочу включить аргумент содержимого, который фильтрует комментарий (дочерний элемент), если переданная строка находится в содержимом комментария.
getTodo(id: ID!, content: String!): Todo
Я пробовал прикрепить резолвер к комментариям (в Todo). Если я добавлю сюда фильтр, как я смогу получить ctx.args.content, который был передан в getTodo (id: ID !, content: String!).
{
"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 для получения комментариев (с содержимым, содержащим переданную строку)? Могу ли я сделать это так (доступ, если comments.content содержит переданные аргументы строки содержимого):
{
"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}
? Это должно дать вам доступ к родительским аргументам из вложенного преобразователя. - person Maurice   schedule 19.07.2019