Вот как выглядит мой 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 последних сообщений?
Ознакомьтесь с новой директивой @key: https://aws-amplify.github.io/docs/cli/graphql#key
Я не пробовал новую директиву @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"
}
Amplify создаст для вас резолверы. Вы можете изменить их в amplify/backend/api/<your API name>/resolver directory
и синхронизировать свой проект с AppSync, набрав amplify push
Я предполагаю, что вы судитесь amplify
, если вы этого не сделаете, вы найдете резолвер в консоли AppSync, в определении схемы, посмотрите на правую сторону, где перечислены все поля и операции, вы можете нажать на ссылки, чтобы увидеть/обновить резольверы.
Да, я использую Amplify
, но amplify/backend/api/<your API name>/resolver directory
пусто. Не уверен, что мне не хватает...
Спасибо за ответ. Я новичок в AppSync и только начинаю замечать о распознавателе. Добавляете ли вы этот код через консоль AWS, добавляя функцию на странице AppSync? Как добавить резольверы?