4. 总结
2m

总结

我们的服务器实现看起来不错,但仍有几处我们在使用旧包。

graphql-tag

让我们进入 src/schema.js。在文件顶部,我们会看到我们要求 gqlapollo-server

src/schema.js
const { gql } = require("apollo-server");

这是我们安装的 graphql-tag 包的用途!让我们更新 import 以改为使用此包。(请注意,我们现在要求 gql 作为 默认 导出!)

src/schema.js
- const { gql } = require("apollo-server");
+ const gql = require("graphql-tag")

在底层, apollo-server (AS3) 使用 gql 直接来自 graphql-tag,并根据命名导出 gql,重新导出供我们使用。

新的 @apollo/server 包不再直接导出此实用程序;这就是我们自行安装它的原因。我们可以直接使用 graphql-tag 包,并获取与之前相同的函数。

@apollo/datasource-rest

对于我们最终的更新,导航至 src/datasources/track-api.js。您会发现我们要求使用旧的 apollo-datasource-rest 软件包。

这是一个简单的更新!让我们用新的 @apollo/datasource-rest 软件包替换掉它 - 其他一切都保持不变。

src/datasources/track-api.js
- const { RESTDataSource } = require('apollo-datasource-rest');
+ const { RESTDataSource } = require('@apollo/datasource-rest');

注意:新的 @apollo/datasource-rest 软件包在 "apollo" 和 "datasource" 两个单词之间使用斜杠 (/) 而不是破折号 (-)。

启动服务器

我们已完成所有必要的更新来实现最新的 4 个软件包和功能。让我们试一试吧!

在您项目的根目录中,运行 npm start

odyssey-lift-off-part5-server
npm start

我们应该看到相同的日志消息列在我们服务器运行的位置。但当我们导航到 localhost:4000 时,我们跳过登录页面并直接转到 Sandbox Explorer。我们的服务器已准备好 了!

query GetTrackTitles {
tracksForHome {
title
}
}
任务!

尝试上述 ,我们获得了完全相同的数据。我们的服务器具有与之前相同的功能,但我们拥有了更多灵活性。

使用 4 构建的服务器比以往任何时候都更易于维护和扩展。这些益处对于构建至关重要,无论您的产品(和想象力!)将其带到何处,该图形都可以进行扩展。

要详细了解现在 中有用的其他功能,请访问 有关迁移到版本 4 的官方文档

感谢您的加入,我们下次见!

上一个

分享您对这节课的问题和评论

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

您需要一个 GitHub 帐户才能在下面发帖。没有帐户? 转而去我们的 Odyssey 论坛发帖。