gpt4 book ai didi

graphql - Apollo 客户端 : Can @defer be used with client side resolvers?

转载 作者:行者123 更新时间:2023-12-04 01:46:48 26 4
gpt4 key购买 nike

出于某种原因,我不得不构建一个仅客户端的 GraphQL 服务器,我的架构构建如下:

    private buildSchema(): GraphQLSchema {
const allTypes: string = ...// my types
const allResolvers: IResolvers[] = ...// my resolvers

return makeExecutableSchema({
typeDefs: allTypes,
resolvers: allResolvers
});
}

客户端如下:

        this.client = new ApolloClient({
link: new SchemaLink({schema: this.buildSchema()}),
cache: new InMemoryCache({
addTypename: false
})
});

一切正常,除了我的查询不是 defered .例如,如果我运行:

const gqlQuery: string = `
{
user {
name
slowResolver @defer {
text
}
}
}
`

const $result = this.apollo.getClient().watchQuery({
query: gql(gqlQuery)
});

$result 只会在整个查询被解析时发出(而不是 user 然后 slowResolver 如预期的那样)。

知道我在工作流程中遗漏了什么吗?

最佳答案

@defer 指令实际上已从 Apollo 中删除,尽管有 some work done to reimplement it .不过,即使实现了,延迟查询也必须在执行上下文之外处理。换句话说,执行模式可以返回延迟执行结果,但其他东西(比如 Apollo 服务器本身)必须处理响应(包括初始负载和后续补丁)如何通过任何传输实际发送到服务器。

不幸的是,如果您要在客户端定义模式,则无法使用 @defer 指令。

关于graphql - Apollo 客户端 : Can @defer be used with client side resolvers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54981539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com