首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用GraphQL控制AWS中列表查询的排序方向

问如何用GraphQL控制AWS中列表查询的排序方向
EN

Stack Overflow用户
提问于 2020-10-11 04:28:15
回答 2查看 3.3K关注 0票数 0

我看到了几篇有用的文章,介绍了如何在AWS-扩容的GrahphQL API包中创建模式,该包将返回排序的响应。简单地说,如果您的schema.graphql文件中有以下内容

代码语言:javascript
复制
type Record @model
@key(name: "byDateCreated", fields: ["status", "createdAt"], queryField: "RecordsByDateCreated") {
    id: ID!
    status: RecordStatus!
    description: String!
    createdAt: String
}

它将创建一个名为recordsByDateCreated的自定义查询。使用它如下(js这里,各位):

代码语言:javascript
复制
await API.graphql(graphqlOperation(recordsByDateCreated, { status: 'unused', limit: 10 }));

将返回表中按其createdAt值排序的前10条记录。默认情况下,该数据将以升序顺序返回,这意味着您将首先获得最古老的记录。

然而,我需要的是一个回应,首先有最新的记录。为了设置排序顺序,我必须在模式或查询中添加什么?

EN

回答 2

Stack Overflow用户

发布于 2020-10-11 04:28:15

(播音员警报:我在这里回答我自己的问题,以防其他人在这方面寻求帮助)。

您需要一种方法来按降序顺序排列表的记录。如果您去查看AWS-扩容生成的文件,您将看到您创建的新查询接受一系列参数:

代码语言:javascript
复制
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'),那么当您按如下方式进行查询时,可以将其中一个变量作为变量参数传入:

代码语言:javascript
复制
await API.graphql(graphqlOperation(recordsByDateCreated, { status: 'unused', limit: 10, sortDirection: 'DESC' }));

(请注意,要传递的变量的键是sortDirection,而不是$sortDirection或ModelSortDirection。)

我在AWS-扩容的文档中找不到这个,并依赖于我找到的其他帖子。如果您已经找到任何与此相关的文档,那么您也许可以在注释中添加一个链接。

票数 2
EN

Stack Overflow用户

发布于 2021-09-12 16:38:16

(不能以低于50 lol的声誉发表评论,所以需要另一个答案)

正如您提到的添加sortDirection作为变量参数之一,允许您选择方向,但如果您希望按照默认属性以外的特定属性对项进行排序,则必须在graphql模式模型定义中做出选择。因此,对于模型User,您可以在第二个键字段中选择属性

代码语言:javascript
复制
type User
@model
@key(fields: ["id", "DoB"]) {
    id: ID!
    name: String!
    DoB: String!
    createdAt: String!
}

查询将按其DoB对项目进行排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64300602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档