AWS AppSync - как запрашивать данные по диапазону дат (сегодня до 30 дней назад)? - PullRequest
0 голосов
/ 30 мая 2019

Вот так выглядит мой 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 последних сообщений?

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Я не пробовал новую директиву @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 голосов
/ 30 мая 2019

Ознакомьтесь с новой директивой @key: https://aws -amplify.github.io / docs / cli / graphql # key

...