Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql AWS放大图中的排序结果无需过滤_Graphql_Aws Amplify - Fatal编程技术网

Graphql AWS放大图中的排序结果无需过滤

Graphql AWS放大图中的排序结果无需过滤,graphql,aws-amplify,Graphql,Aws Amplify,在graphql.schema中提供了一个非常简单的模型,如何执行简单的排序查询 type Todo @model id: ID! text: String! } 它在querys.js中生成以下内容 export const listTodos = /* GraphQL */ ` query ListTodos( $filter: ModelTodoFilterInput $limit: Int $nextToken: String ) { l

graphql.schema
中提供了一个非常简单的模型,如何执行简单的排序查询

type Todo @model
  id: ID!
  text: String!
}
它在
querys.js
中生成以下内容

export const listTodos = /* GraphQL */ `
  query ListTodos(
    $filter: ModelTodoFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listTodos(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        text
      }
      nextToken
    }
  }
`;
我找到了多个指向
@键方向的源。这个类似的问题解决了这个方法()

虽然这看起来很有希望,并且成功地生成了我可以使用的新查询,但我尝试过的所有方法都要求我在对数据进行排序之前过滤数据。我所要做的就是根据给定的列名和给定的排序方向(ASC/DESC)对todo结果进行排序

这是我执行简单(未排序)查询的方式:
const todos=await API.graphql(graphql操作(listtoos))

我希望按照以下思路做一些事情:
const-todos=wait-API.graphql(graphqlooperation(listtoos,{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);
有关详细信息,请参阅


我接受了MTran的答案,因为我觉得这是最接近实际解决方案的解决方案,但我也决定实际选择解决方案。这样,我就避免了向ElasticSearch添加依赖项


最后,我在模式中添加了一个字段,每个条目对该字段都有相同的值。这样,我就可以根据该值进行筛选,并且仍然拥有整个值表,我可以对其进行排序。

这难道不需要对AWS Elasticsearch进行额外的依赖性(以及额外的服务器成本?)是的,这是我在撰写本文时能找到的唯一方法(没有筛选)。使用AWS弹性搜索可能是值得的,如果您考虑的灵活性和性能弹性搜索提供正常的DB搜索查询。查看本文:另一种选择是,您可以进行客户端排序,但这只适用于小型数据集。