首页 > 解决方案 > Apollo graphQL - 您可以使用变量查询本地状态而无需使用解析器吗?

问题描述

我正在使用 apollo-cache-inmemory、apollo-client、react-apollo。

我的本地状态包含一个用户数组,如下所示:-

users: [{

__typename: "User",

userId: "hashid1",

...
},

{

__typename: "User",

userId: "hashid2",

...
}]

现在我显然可以运行一个简单的查询来检索本地状态的所有用户:-

import gql from "graphql-tag"
export default gql`{users @client {userId}}`

但是,我想做的是能够直接查询用户数组,传递如下变量:-

const userDetails = await client.query({ query: USER_DETAILS, variables: {id: "hashId1"}})

是否可以在不使用解析器的情况下运行此查询?我尝试了以下但 { data } 返回为空: -

export default gql`query user($id: String!) {users(userId: $id) @client {userId}}`

我已经使用了解析器,并且可以轻松编写一个来解决这个问题,但我想知道是否有可能在没有解析器的情况下执行此任务?

标签: graphqlapolloreact-apolloapollo-client

解决方案


看起来你正在寻找一些魔法;)

您必须编写自定义代码(覆盖默认解析器 - 返回所有记录)以具有自定义行为(返回按您的条件过滤的数据)。那应该是不言而喻的。

graphql 中没有默认/就绪/内置的搜索/过滤语法 - 因此,在 apollo-client 中没有默认行为(无论本地/远程服务器/数据)。由你来实现你所需要的。


推荐阅读