3

我使用RESTDataSource作为 Apollo 服务器中所有 REST 后端操作的基础。这适用于查询和突变,特别是在单个请求中使用缓存响应的能力按预期工作。

我也想在订阅的上下文中使用我的 RESTDataSource 实现,以防客户端询问订阅消息的“本机”有效负载中不存在的细节(在这种情况下,Apollo 将调用适当的解析器去获取它)。

目前我正在初始化我的 RESTDataSources 作为 ApolloServer 使用的上下文回调函数的一部分,并将它们添加到返回的上下文中(如果回调传递了一个connection对象,我只会这样做)。

问题在于,这是在订阅建立时调用的,而不是在每条消息通过该订阅到达时调用。因此,只要订阅保持打开状态,RESTDataSource 的自然缓存行为就会发挥作用,这可能太长而无法适应缓存的响应。

我会对如何克服这个问题的任何建议感兴趣;可能以某种方式实例化数据源以在这种特殊情况下禁用缓存,或者以某种方式在每条消息到达时重新初始化上下文中的数据源(尽管我看不到合适的入口点)。

4

0 回答 0