[英]How to control sort direction in a list query in AWS-Amplify with GraphQL
我看過幾篇關於如何在 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 }));
將返回表中按其createdAt
值排序的前 10 條記錄。 默認情況下,此數據將按升序返回,這意味着您將首先獲得最舊的記錄。
但是,我需要的是首先具有最新記錄的響應。 我必須在架構或查詢中添加什么才能設置排序順序?
(劇透警告:我在這里回答我自己的問題,以防其他人尋求幫助。)
您需要一種方法來按降序對表的記錄進行排序。 如果您查看 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”),則可以在進行查詢時將一個作為變量參數之一傳入,如下所示:
await API.graphql(graphqlOperation(recordsByDateCreated, { status: 'unused', limit: 10, sortDirection: 'DESC' }));
(請注意,您傳遞的變量的鍵是sortDirection
而不是$sortDirection
或ModelSortDirection
。)
我在 AWS-Amplify 的文檔中找不到這個,並依賴於我發現的其他帖子。 如果您找到了與此相關的任何文檔,那么您可以在評論中添加一個鏈接。
(不能以低於 50 的聲望發表評論,所以需要做一個完整的其他答案)
正如您提到的,將sortDirection
添加為變量參數之一允許您選擇方向,但如果您希望按默認屬性以外的特定屬性對項目進行排序,則必須在 graphql 中做出該選擇模式模型定義。 因此,對於模型User
您將在第二個關鍵字段中選擇屬性
type User
@model
@key(fields: ["id", "DoB"]) {
id: ID!
name: String!
DoB: String!
createdAt: String!
}
並且查詢將按其DoB
對項目進行排序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.