繁体   English   中英

如何在 AWS Amplify GraphQL 客户端中进行过滤

[英]How to do filteration in AWS Amplify GraphQL Client

我正在尝试使用 Amplify GraphQL Client 实现 GraphQL 过滤器。 我得到了一份待办事项列表,并想检索状态已完成的待办事项列表。

该文档仅显示如何获取所有项目和单个项目

const allTodos = await API.graphql(graphqlOperation(queries.listTodos));
console.log(allTodos);

有人可以告诉我如何将过滤器应用于 listTodos,以便它仅返回状态为完成的待办事项。

我尝试执行以下操作,但这是错误的。

API.graphql(graphqlOperation(queries.listTodos(filter: {
    status: {
        eq: "completed"
    }
})));

我想我对你的问题有了答案,但我也有一个关于 AWS Amplify codegen查询、突变等的类似问题。如果你查看在~/graphql文件夹内生成的代码,你会发现一个声明类似这样的文件:

export const listOrganizations = `query ListOrganizations(
  $filter: ModelOrganizationFilterInput
  $limit: Int
  $nextToken: String
) {
  listOrganizations(filter: $filter, limit: $limit, nextToken: $nextToken) {
    items {
      id
      name
      address
    }
    nextToken
  }
}
`;

您可以在此处看到ListOrganizations查询的第一个参数(在您的例子中是ListTodos查询)采用filter: $filter的第一个参数。 到目前为止,我已经知道您可以通过执行以下操作来修改此查询...

API.graphql(graphqlOperation(queries.listTodos, {
    filter: {
        status: {
            eq: "completed"
        }
    }
})));

这应该过滤掉所有 Todos,除了那些status等于completed的 Todos。 我遇到的问题是我想启用不同级别的访问控制,这样任何拥有Admin Cognito 用户池组的人都可以查看@model以及@owner 我能够使用@auth转换器使这一切正常工作,但现在我的问题是,在某些屏幕上,我只想显示某些实体,这些实体是该实体的owner ,并且因为我也是Admin ,所以 API 默认值得到我的一切。 我想使用此@filterModelOrganizationFilterInput仅向我提供我是所有者的数据。 我发现这样做的唯一方法是将owner字段添加到我的架构中,但是 API 总是提供所有者字段,我想过滤掉该字段。

我能找到的关于aws-amplify APIgraphqlOperation方法的唯一文档是: https ://aws-amplify.github.io/docs/js/api 但示例不多,而且显示不多API 如何在客户端上工作。 我卡住了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM