迁移到 Meteor 2.11
Meteor 2.11 中的大多数新功能要么直接在后台应用(以向后兼容的方式),要么是可选的。有关更改的完整细分,请参阅变更日志。
话虽如此,您应该实施一些项目,以便将来更容易。
MongoDB 6.0.3
简介
此迁移建议但并非必需。从 Meteor v2.2.0 开始,我们支持 MongoDB v6.x(并非其所有功能),您可以查看兼容性表,但我们鼓励大家尽快运行最新版本的 Meteor,因为您可以受益于新的 MongoDB 驱动程序以及我们始终添加到 Meteor 的其他功能。
2.11 之前的 Meteor 支持 MongoDB 服务器 5.x,从该版本开始,我们已将 MongoDB Node.js 驱动程序从 4.12.1 升级到 4.14。
在编写本指南时(2023 年 1 月),此更改是必要的,因为 MongoDB Atlas 将在 2022 年 2 月自动将 Atlas M0(免费集群)、M2 和 M5 计划中的所有集群迁移到 MongoDB 6.0,但此更改无论如何都是必要的,因为这现在是 MongoDB 服务器的最新版本。M0、M2 和 M5 中的迁移只是 MongoDB 发出的一个信号,表明他们认为 MongoDB 6.0 应尽快成为每个人使用的版本。
需要注意的是,我们已迁移 Meteor 支持的所有内容以与 MongoDB 6.x 和 MongoDB Node.js 驱动程序 4.x 兼容,但这不包括(正如您所预期的那样)您在代码或包中使用 rawCollection
所做的操作。rawCollection
是 Meteor 提供给您与 MongoDB 驱动程序交互的自由的一种方式,但也需要您有责任使您的代码与 Meteor 使用的驱动程序版本保持最新。
也就是说,我们鼓励大家尽快运行最新版本的 Meteor,因为您可以受益于新的 MongoDB 驱动程序以及我们始终添加到 Meteor 的其他功能。
此版本的 Meteor 也与早期版本的 MongoDB 服务器兼容,因此即使您尚未运行 MongoDB 6.x,您也可以继续使用最新版本的 Meteor 且没有任何问题。您可以在此处查看 4.13.0 版本的 Node.js 驱动程序支持的 MongoDB 服务器版本,因此这些也是 Meteor 2.11 支持的 MongoDB 服务器版本。简而言之,Meteor 2.11 支持以下版本的 MongoDB 服务器:6.1、6.0、5.0、4.4、4.2、4.0、3.6。
嵌入式 MongoDB
如果您在本地环境中使用嵌入式 MongoDB,则应运行 meteor reset
以使数据库在此升级后正常工作。meteor reset
将删除本地数据库中的所有数据。
meteor mongo
从 MongoDB 6.X 版本开始,mongo
shell 不再可用。此处可以查看更多信息。因此,meteor mongo
命令将不再起作用。如果您使用此命令,则应改为使用 mongosh
命令。我们将努力使未来的 Meteor 版本的 meteor mongo
能够再次与 mongosh
一起使用,但目前您可以直接使用 mongosh
。
已删除的运算符
以下运算符已从 MongoDB 6.0.3 发行说明 中检索到的 MongoDB 6.0.3 中删除。
- $comment:使用 cursor.comment()
- $explain:使用 cursor.explain()
- $hint:使用 cursor.hint())
- $max:使用 cursor.max()
- $maxTimeMS:使用 cursor.maxTimeMS()
- $min:使用 cursor.min()
- $orderby:使用 cursor.sort()
- $query:请参阅 游标方法
- $returnKey:使用 cursor.returnKey()
- $showDiskLoc:使用 cursor.showRecordId
- db.getLastError():请参阅 已删除的旧版操作码
- db.getLastErrorObj():请参阅 已删除的旧版操作码
- getLastError:请参阅 已删除的旧版操作码
更改
Meteor API 没有发生任何变化。如果您使用上述任何功能,可能会遇到问题。
下面我们描述了此迁移中的一些常见案例。
1) MongoDB 服务器的相同版本
如果您没有更改 MongoDB 服务器版本,则无需在代码中进行任何更改,但由于我们对 Meteor 与 MongoDB 的交互方式进行了许多更改以使其与新驱动程序兼容,因此我们建议您在使用此 Meteor 版本发布到生产环境之前仔细测试您的应用程序。
我们已在真实应用程序以及我们的自动测试套件中进行了许多测试,我们相信我们已解决了在此过程中发现的所有问题,但 Meteor 与 MongoDB 的交互非常广泛且开放,因此您可能拥有可能导致不同问题的不同用例。
再说一次,我们不知道这些更改引入了任何问题,但检查应用程序的行为非常重要,尤其是在您认为未以传统方式使用 MongoDB 的地方。
2) 从 MongoDB 5.x 迁移到 MongoDB 6.x
由于我们在本版本中对 Meteor 核心包进行了许多更改,因此我们建议执行以下步骤进行迁移
- 将您的应用程序升级到使用 Meteor 2.11(meteor update –release 2.11)在分支中;
- 使用在上一步中创建的分支,创建具有 MongoDB 6.x 和应用程序环境的登台环境;
- 如果您使用的是 MongoDB Atlas,在 MongoDB Atlas 中,我们无法迁移到免费的 MongoDB 6.x 实例,因此我们不得不迁移到付费集群才能正确测试应用程序,这可能会在 2023 年 2 月之后发生变化;
- 使用 MongoDB 6.x 设置登台数据库,并在其中还原生产数据,或者以某种方式填充此数据库,以便您可以重现与生产环境相同的案例;
- 运行您的应用程序,并将您的 MONGO_URL 指向正在运行 MongoDB 6.x 的此新数据库;
- 在此环境中运行端到端测试。如果您没有强大的端到端测试,我们建议您手动测试您的应用程序以确保一切正常。
- 一旦您拥有稳定的端到端测试(或手动测试),您就可以认为您已准备好使用 MongoDB 6.x 运行,因此您可以将其视为任何其他数据库版本迁移。
我们不知道支持 MongoDB 所需的更改引入了任何问题,但检查应用程序的行为非常重要,尤其是在您认为未以传统方式使用 MongoDB 的地方。
从低于 2.10 的版本迁移?
如果您从低于 Meteor 2.10 的 Meteor 版本迁移,则可能存在本指南中未列出的重要注意事项。请查看旧的迁移指南以获取详细信息。
- 迁移到 Meteor 2.10(从 2.9)
- 迁移到 Meteor 2.9(从 2.8)
- 迁移到 Meteor 2.8(从 2.7)
- 迁移到 Meteor 2.7(从 2.6)
- 迁移到 Meteor 2.6(从 2.5)
- 迁移到 Meteor 2.5(从 2.4)
- 迁移到 Meteor 2.4(从 2.3)
- 迁移到 Meteor 2.3(从 2.2)
- 迁移到 Meteor 2.2(从 2.0)
- 迁移到 Meteor 2.0(从 1.12)
- 迁移到 Meteor 1.12(从 1.11)
- 迁移到 Meteor 1.11(从 1.10.2)
- 迁移到 Meteor 1.10.2(从 1.10)
- 迁移到 Meteor 1.10(从 1.9.3)
- 迁移到 Meteor 1.9.3(从 1.9)
- 迁移到 Meteor 1.9(从 1.8.3)
- 迁移到 Meteor 1.8.3(从 1.8.2)
- 迁移到 Meteor 1.8.2 (从 1.8 迁移)
- 迁移到 Meteor 1.8 (从 1.7 迁移)
- 迁移到 Meteor 1.7 (从 1.6 迁移)
- 迁移到 Meteor 1.6 (从 1.5 迁移)
- 迁移到 Meteor 1.5 (从 1.4 迁移)
- 迁移到 Meteor 1.4 (从 1.3 迁移)
- 迁移到 Meteor 1.3 (从 1.2 迁移)