Apollo Vue (с использованием AWS Amplify / AppSyn c) Запрос Graphql не извлекает родительские данные - PullRequest
0 голосов
/ 14 апреля 2020

Я использую AWS AppSyn c (через Apollo Vue), и у меня есть следующая модель graphql.

type Service @model
{
  id: ID!
  name: String!
  description: String!
}

type Session @model
{
  id: ID!
  service: Service @connection(keyName: "ServiceSessionConnection")
}

Средство разрешения таблицы обслуживания:

#set( $limit = $util.defaultIfNull($context.args.limit, 10) )
#set( $query = {
  "expression": "#connectionAttribute = :connectionAttribute",
  "expressionNames": {
      "#connectionAttribute": "serviceSessionsId"
  },
  "expressionValues": {
      ":connectionAttribute": {
          "S": "$context.source.id"
    }
  }
} )
{
  "version": "2017-02-28",
  "operation": "Query",
  "query":   $util.toJson($query),
  "scanIndexForward":   #if( $context.args.sortDirection )
    #if( $context.args.sortDirection == "ASC" )
true
    #else
false
    #end
  #else
true
  #end,
  "filter":   #if( $context.args.filter )
$util.transform.toDynamoDBFilterExpression($ctx.args.filter)
  #else
null
  #end,
  "limit": $limit,
  "nextToken":   #if( $context.args.nextToken )
$util.toJson($context.args.nextToken)
  #else
null
  #end,
  "index": "gsi-Service.sessions"
}

Средство разрешения таблицы сеансов:

{
  "version": "2017-02-28",
  "operation": "GetItem",
  "key": {
      "id": $util.dynamodb.toDynamoDBJson($util.defaultIfNullOrBlank($ctx.source.sessionServiceId, "___xamznone____"))
  }
}

Я создаю следующие записи:

mutation createService {
   createService {
     id: "Id1",
     name: "name",
     description: "desc"
   }
}
mutation createSession {
   createSession {
     id: "Id2",
     serviceSessionsId: "Id1" //note: serviceSessionsId created part of relationship (it is part of the resolved code above!), and I am setting that to parent ID (in this case serviceId value "Id1")
   }
} 

Я пытаюсь выполнить следующий запрос дочерней таблицы (сеанс) с данными родительского (службы):

query listSessions {
  listSessions {
    items {
      id,
      serviceId,
      service {        //retuns null data
        id,            //retuns null data
        name,          //retuns null data
        description.   //retuns null data
      }
    }
  }
}

Я не получаю родительские данные (объект службы). Так как я смоделировал отношения ребенок-родитель @connection(keyName: "ServiceSessionConnection"), не следует ли ожидать родительских данных в результате запроса? Я что-то упустил? Что еще нужно настроить, чтобы иметь данные отношения в результате запроса?

1 Ответ

0 голосов
/ 15 апреля 2020

Дальнейшее разбирание кода распознавателя: проблема решена путем установки для serviceSessionsId и sessionServiceId значения Id1 при создании дочерней записи createSession()

...