我正在尝试使用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"
}
})));
答案 0 :(得分:0)
我想我对您的问题有一个答案,但是对于AWS Amplify codegen
查询,突变等,我也有一个类似的问题。如果您查看在{{1}内部生成的代码}文件夹,您将找到与此类似的声明文件:
~/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"
}
}
})));
等于status
。我遇到的问题是我想启用不同级别的访问控制,以便拥有completed
的Cognito用户池组的任何人都可以查看Admin
和@model
。而且我可以使用@owner
转换器使所有工作正常,但是现在我的问题是,在某些屏幕上,我只想显示属于该实体@auth
的某些实体,因为我是也是owner
,API默认为我提供所有信息。我想使用此Admin
或@filter
仅向我提供所有者所在的数据。我发现这样做的唯一方法是将ModelOrganizationFilterInput
字段添加到我的架构中,但是API始终提供了owner字段,而我想将该字段过滤掉。
我可以找到关于owner
aws-amplify
和API
方法的唯一文档,这里是:https://aws-amplify.github.io/docs/js/api,但是示例不多,没有显示API在客户端上的大部分工作方式。我被卡住了。