7. 服务器世界的连点成线
2m
您目前在学习本课程的旧版本。 查看课程变更日志.

我们已经准备好了我们的,但它们还不知道如何协同工作。

是我们的所有构建元素(模式、)实现完美协作的地方。

Hand-drawn illustration depicting a GraphQL server juggling three components: the schema, resolver function and data sources

server/src/index.js,我们在第一部分中配置了我们的,现在我们可以用解析器替换我们的模拟对象。

让我们删除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 键。这将使我们能够从我们的 resolverscontext 参数访问 dataSources.trackAPI(及其方法)。Apollo Server 会为我们处理所有连接工作,非常方便!

要了解更多关于 ApolloServer 可以接受哪些选项,请查看文档

完成后的服务器配置将如下所示:

const server = new ApolloServer({
typeDefs,
resolvers,
dataSources: () => {
return {
trackAPI: new TrackAPI(),
};
},
});
代码挑战!

使用 dataSources 键为 RestDataSourceSpaceCatsAPI 配置 ApolloServer 选项,这样我们就能在我们的 resolver 中通过 dataSources.spaceCatsAPI 访问到它。(请注意,这是大小写敏感的!)

为什么我们需要在 ApolloServer 选项中配置 dataSources 键?

我们的服务器现在已完全配置,可以处理实时数据。

上一页

分享您对本课的疑问和评论

您的反馈帮助我们改进!如果您遇到困难或困惑,请告诉我们,我们将帮助您解决问题。所有评论都是公开的,并且必须遵循 Apollo 行为准则。请注意,已解决的问题或已解决的评论可能会被删除。

您需要在以下内容中有一个 GitHub 账户。还没有吗? 请在我们的 Odyssey 论坛上发布帖子。