AWS AppSync - 如何按日期范围(今天到 30 天前)查询数据?
AWS AppSync - How to query data by date range(Today to 30 days before)?
这就是我的 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
并获得 returns 30 个最新帖子?
查看新的@key 指令:https://aws-amplify.github.io/docs/cli/graphql#key
我没有尝试 Richard 提到的新 @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"
}
这就是我的 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
并获得 returns 30 个最新帖子?
查看新的@key 指令:https://aws-amplify.github.io/docs/cli/graphql#key
我没有尝试 Richard 提到的新 @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"
}