我们已经准备好了我们的解析器和数据源,但它们还不知道如何协同工作。
Apollo Server是我们的所有构建元素(模式、解析器和数据源)实现完美协作的地方。
在server/src/index.js
,我们在第一部分中配置了我们的Apollo Server,现在我们可以用解析器替换我们的模拟对象。
让我们删除mocks
对象,以及ApolloServer
构造器中的mocks
属性。
接下来,让我们在顶部导入我们的resolvers
文件。
const resolvers = require("./resolvers");
然后将它添加到ApolloServer
选项中。
const server = new ApolloServer({typeDefs,resolvers,});
这样我们就处理好了解析器。
接下来,在我们的 resolvers
导入下方,我们将引入我们track-api
,也就是我们的数据源文件(继承自 RESTDataSource
),并将其命名为 TrackAPI
(注意 PascalCase 规范,因为这里我们处理的是类)。
const TrackAPI = require("./datasources/track-api");
为了将我们的服务器与我们的 TrackAPI
连接,我们将添加 dataSources
键。这将使我们能够从我们的 resolvers
的 context
参数访问 dataSources.trackAPI
(及其方法)。Apollo Server
会为我们处理所有连接工作,非常方便!
要了解更多关于 ApolloServer
可以接受哪些选项,请查看文档。
完成后的服务器配置将如下所示:
const server = new ApolloServer({typeDefs,resolvers,dataSources: () => {return {trackAPI: new TrackAPI(),};},});
使用 dataSources
键为 RestDataSource
类 SpaceCatsAPI
配置 ApolloServer
选项,这样我们就能在我们的 resolver 中通过 dataSources.spaceCatsAPI
访问到它。(请注意,这是大小写敏感的!)
ApolloServer
选项中配置 dataSources
键?我们的服务器现在已完全配置,可以处理实时数据。
分享您对本课的疑问和评论
您的反馈帮助我们改进!如果您遇到困难或困惑,请告诉我们,我们将帮助您解决问题。所有评论都是公开的,并且必须遵循 Apollo 行为准则。请注意,已解决的问题或已解决的评论可能会被删除。
您需要在以下内容中有一个 GitHub 账户。还没有吗? 请在我们的 Odyssey 论坛上发布帖子。