阿波罗空上下文

Posted

技术标签:

【中文标题】阿波罗空上下文【英文标题】:Apollo Empty context 【发布时间】:2018-09-09 12:08:34 【问题描述】:

我正在尝试获取上下文,在我的服务器端,不幸的是我总是得到一个空的上下文

客户端(角度):

this.apollo.query( query: gql` message `, context:  test: 'test'  ).subscribe(console.log)

服务器端:

message: 
   type: GraphQLString,
   resolve: (obj, args, context, info) => 
     console.log('context: ', context)

     return 'hey'
   

【问题讨论】:

【参考方案1】:

客户端的上下文与服务器端解析器的上下文无关。

要将信息传递给服务器,您可能需要使用query arguments。这就是解析器函数中的 args 参数的用途。

服务器端

关于服务器端的上下文,取自Resolver function signature:

    context:这是特定查询中所有解析器共享的对象,用于包含每个请求的状态,包括身份验证信息、数据加载器实例以及解析时应考虑的任何其他内容查询。如果您使用的是 Apollo Server,请阅读设置文档中有关如何设置上下文的信息。

还有这里,graphqlOptions.context:

context 是一个可以在每个解析器中作为第三个参数访问的对象。这是根据当前请求传递信息的好地方。

客户端

在客户端,上下文与Apollo Link 和网络层有关。

关于Apollo Link Context:

由于链接是用来组合的,它们需要一种简单的方法来组合 将有关请求的元数据沿着链接链发送。

...

上下文发送到服务器,而是用于链接到链接的通信。

【讨论】:

以上是关于阿波罗空上下文的主要内容,如果未能解决你的问题,请参考以下文章

错误:尝试在空上下文中调用方法 isEmpty

无法在阿波罗服务器上下文中获取会话?

无法为阿波罗服务器中的解析器设置上下文

阿波罗节点服务器;编写插件时如何在请求上下文中获取突变/查询模式路径?

在android中获取上下文和活动对象null

在 android 中使用 Telr 支付网关时上下文为空