如何解决如何使用GraphQL在AWS-Amplify中控制列表查询中的排序方向
我已经看了几篇关于如何在AWS-Amplify的GrahphQL API包中创建架构的有用文章,这些文章将返回已排序的响应。简而言之,如果您的schema.graphql
文件中包含以下内容
type Record @model
@key(name: "byDateCreated",fields: ["status","createdAt"],queryField: "RecordsByDateCreated") {
id: ID!
status: RecordStatus!
description: String!
createdAt: String
}
它将创建一个名为recordsByDateCreated
的自定义查询。如下使用它(这里是js,伙计们):
await API.graphql(graphqlOperation(recordsByDateCreated,{ status: 'unused',limit: 10 }));
将返回表中的前10条记录,这些记录按其createdAt
值排序。默认情况下,这些数据将以升序顺序返回,这意味着您将首先获得最早的记录。
但是,我需要的是最先包含最新记录的响应。我必须在架构或查询中添加些什么,以便设置排序顺序?
解决方法
(扰流板警报:如果有人在此方面寻求帮助,我在这里回答自己的问题。)
您将需要一种以降序顺序对表的记录进行排序的方法。如果您查看由AWS-Amplify生成的文件,您将看到您创建的新查询接受一系列参数:
export const recordsByDateCreated = /* GraphQL */ `
query RecordsByDateCreated(
$status: RecordStatus
$createdAt: ModelStringKeyConditionInput
$sortDirection: ModelSortDirection
$filter: ModelRecordFilterInput
$limit: Int
$nextToken: String
) {
RecordsByDateCreated(
status: $status
createdAt: $createdAt
sortDirection: $sortDirection
filter: $filter
limit: $limit
nextToken: $nextToken
) {
items {
id
description
status
createdAt
updatedAt
}
nextToken
}
}
`
事实证明,如果您知道ModelSortDirection
的可能值是什么(它们是'ASC'和'DESC'),则可以在进行如下查询时将in作为变量参数之一传递所以:
await API.graphql(graphqlOperation(recordsByDateCreated,{ status: 'unused',limit: 10,sortDirection: 'DESC' }));
(请注意,您要传递的变量的键是sortDirection
,而不是$sortDirection
或ModelSortDirection
。)
我在AWS-Amplify的文档中找不到此内容,并且依赖于我发现的其他帖子。如果您找到与此相关的任何文档,则可以在评论中添加链接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。