在 graphql.schema
中提供了一个非常简单的模型,我将如何执行简单的排序查询?
type Todo @model
id: ID!
text: String!
}
在 queries.js
中生成以下内容.export const listTodos = /* GraphQL */ `
query ListTodos(
$filter: ModelTodoFilterInput
$limit: Int
$nextToken: String
) {
listTodos(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
text
}
nextToken
}
}
`;
我发现多个消息来源将我指向 @key
的方向。 directive .这个类似的问题解决了这种方法( GraphQL with AWS Amplify - how to enable sorting on query )。虽然这看起来很有希望并且成功地生成了我可以使用的新查询,但我尝试过的所有方法都要求我在对数据进行排序之前对其进行过滤。我想要做的就是在给定的列名上对我的待办事项结果进行排序,并使用给定的排序方向(ASC/DESC)。
这是我执行简单(未排序)查询的方式:
const todos = await API.graphql(graphqlOperation(listTodos));
我希望按照以下方式做一些事情:const todos = await API.graphql(graphqlOperation(listTodos, {sortField: "text", sortDirection: "ASC"} ))
.
最佳答案
使用 @searchable
指令装饰您的模型,如下所示:
type Todo @model @searchable
{
id: ID!
text: String!
}
之后,您可以使用如下排序功能查询数据:import { searchToDos } from '../graphql/queries';
import { API, graphqlOperation } from 'aws-amplify';
const toDoData = await API.graphql(graphqlOperation(searchToDos, {
sort: {
direction: 'asc',
field: 'text'
}
}));
console.log(toDoData.data.searchToDos.items);
有关更多信息,请参阅关于graphql - 在 AWS Amplify GraphQL 中对结果进行排序而不进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62867425/