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

标签 reactjs react-native graphql aws-appsync aws-amplify

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

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

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

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

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

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"
        }
    }
})));

这应该过滤掉所有待办事项,除了那些状态等于已完成的待办事项。我遇到的问题是,我想启用不同级别的访问控制,以便具有 Admin Cognito 用户池组的任何人都可以查看 @model 以及@owner。我可以使用 @auth 转换器让这一切正常工作,但现在我的问题是在某些屏幕上,我只想显示属于所有者的某些实体由于我也是该实体的管理员,因此 API 默认为我提供所有内容。我想使用此 @filterModelOrganizationFilterInput 只向我提供我是所有者的数据。我发现执行此操作的唯一方法是将 owner 字段添加到我的架构中,但 API 始终提供所有者字段,而我想过滤掉该字段。

我能找到的有关 aws-amplify APIgraphqlOperation 方法的唯一文档位于: https://aws-amplify.github.io/docs/js/api但示例并不多,也没有展示 API 在客户端上的工作原理。我被困住了。

关于reactjs - 如何在 AWS Amplify GraphQL 客户端中进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947508/

相关文章:

javascript - 如何在reactjs中上传到Firebase存储之前调整图像大小

reactjs - 警告 : findDOMNode is deprecated in StrictMode, react-redux-notify

javascript - React 组件 this.props 总是空的

react-native - 如何在水平 FlatList 中使用 PanResponder

python - 如何在 graphene-django 中仅向用户配置文件所有者显示特定字段?

css - 如何使用 react material-ui 编写媒体相关代码?

React-Native 控制模态卡住

javascript - Native Base改变floatlabel输入底部轮廓颜色

javascript - value.getTime 不是函数 GraphQL 自定义标量日期

json - 如何在 Gatsby 中从单个 json 文件创建多个页面