Вот так выглядит мой schema.graphql.

type Post 
  @model
  @auth(
    rules: [
      { allow: owner }
    ]
  ) {
  id: ID!
  author: User! @connection(name: "UserPosts")
  content: AWSJSON!
  createdAt: AWSDateTime
  updatedAt: AWSDateTime
}

Какой сгенерированный запрос GraphQL показан ниже

export const listPosts = `query listPosts(
  $filter: ModelPostFilterInput
  $limit: Int
  $nextToken: String
) {
  listPosts(filter: $filter, limit: $limit, nextToken: $nextToken) {
    items {
      id
      author {
        id
        uuid
      }
      content
      createdAt
      updatedAt
    }
    nextToken
  }
}
`;

Я звоню listPosts, чтобы запросить список сообщений, но не уверен, как внедрить диапазон дат в запрос ниже, который я использую для получения данных.

await API.graphql(graphqlOperation(queries.listPosts, {limit: 10, nextToken: nextToken}))

Можно ли добавить две строки start: TODAY и end: 30 DAYS BEFORE TODAY в запрос выше и получить 30 последних сообщений?

0
Ohsik 30 Май 2019 в 06:09

2 ответа

Лучший ответ

Ознакомьтесь с новой директивой @key: https: //aws-amplify.github. И.О. / Docs / кли / graphql клавишу #

2
Richard 30 Май 2019 в 04:23

Я не пробовал новую директиву @key, упомянутую Ричардом.
Решение, которое я использовал до сих пор, заключается в передаче параметра в преобразователь и реализации выражения запроса на уровне преобразователя.

Например, чтобы запросить все заказы в будущем (когда дата начала бронирования> сегодня), я использовал

#set( $todayString = $util.time.nowISO8601().substring(0, 10) )
{
  "version": "2017-02-28",
  "operation": "Query",
  "query": {
    "expression": "guestId = :gId AND startDate > :startDate",
    "expressionValues": {
      ":gId": $util.dynamodb.toDynamoDBJson($ctx.args.guestId),
      ":startDate": $util.dynamodb.toDynamoDBJson($todayString)
    }
  },
  "index": "guestId-startDate-index"
}
2
Sébastien Stormacq 30 Май 2019 в 05:07