从旧版本升级

此页面包含驱动程序从版本 4.4 到 5.x 的新功能和重大变更列表。有关完整变更列表,请参阅驱动程序 → 变更日志

通过将变更日志与您的应用程序关联起来,Neo4j 驱动程序迁移助手简化了升级过程。它会扫描您的代码库以查找弃用和移除的使用情况,并将其提示给您。该工具不会自动重写您的代码;它只会指出需要采取行动的位置,并提供关于如何处理每个问题的上下文信息。

5.x 系列(5.28)的最新驱动程序版本兼容 Neo4j 服务器 4.4 和 5.x,因此您可以在升级服务器之前升级驱动程序。同时,驱动程序版本 4.4 向前兼容 Neo4j 服务器 5.x,因此您也可以在驱动程序之前升级服务器;然而,鉴于应用程序升级比服务器升级更容易回滚,建议从驱动程序开始升级。

将 Neo4j 服务器升级到新版本时,应用程序中的 Cypher 查询可能也需要更新。驱动程序迁移助手不涵盖 Cypher 的变更。
请参阅Cypher → 弃用、新增和兼容性

使用迁移助手,推荐的升级步骤如下:

  1. 为助手设置工作环境。下载 驱动程序迁移助手 zip 包,解压并进入其目录。然后,假设已安装 python3pip3

    python3 -m venv virtualenvs/neo4j-migration
    source virtualenvs/neo4j-migration/bin/activate
    pip3 install -r requirements.txt
  2. 使用默认配置运行迁移助手并解决所有它发现的问题。path 参数支持通配符匹配,并且可以重复使用。

    python3 main.py -l javascript /path/*.js /path-recursive/**/*.js
  3. 使用正则表达式解析器重新运行助手,并检查是否还有其他合法问题被提出。

    python3 main.py -l javascript --regex-parser /path/*.js /path-recursive/**/*.js

    正则表达式解析器可以检测隐式函数调用和其他难以解析的表达式,但可能会出现更多误报(更多信息,请参阅Neo4j 驱动程序迁移助手 → 准确性)。您可以将任何虚假条目添加到忽略列表,以便助手在将来的运行中不再提出它们。

  4. 尽管助手可以检测到大多数需要采取行动的位置,但仍有一些变更日志条目无法以这种形式被检测到,因此您仍应查阅重大变更部分,并审核您的代码库中表格中带有 标记的变更。

  5. 您已准备好将驱动程序包升级到新版本。例如,使用 npm

    npm update neo4j-driver@5.27

新功能

使用 Driver.executeQuery() 运行事务,无需深入了解驱动程序内部细节

新函数是 Session.executeRead/Write() 的包装器,它抽象了结果处理部分,并直接向调用者返回记录列表。

请参阅查询数据库

DriverSessionTransaction 对象的显式资源管理

可以使用 await using 关键字创建驱动程序、会话事务,而无需在使用完毕后关闭资源。当离开实例化资源的块时,资源将自动关闭。

查询记录的类型映射

查询返回的记录可以映射到特定的接口定义,从而安全访问记录的属性。

重新认证

允许轮换认证令牌,以及会话范围查询范围的认证。

相互 TLS (mTLS) 作为第二认证因素 (2FA)

允许配置客户端 TLS 证书以对服务器进行认证。

请参阅相互 TLS

BookmarkManager 支持

书签管理器使实现会话的因果链变得更容易。

请参阅协调并行事务

通知过滤 API

过滤允许仅接收服务器通知的子集,并提高服务器端性能。

ResultSummary 中查询的 GQL 状态

属性 ResultSummary.gqlStatusObjects 包含一系列 GqlStatusObject,其中包含有关查询执行的信息。

此 API 计划取代当前的通知 API。

遥测

驱动程序将匿名 API 使用统计数据发送到服务器。使用驱动程序配置 telemetryDisabled: true 可选择退出。

请参阅指标/遥测

重大变更和弃用

Assistant 表示 Neo4j 驱动程序迁移助手是否可以检测与给定变更日志条目相关的问题。带有叉号 的条目需要手动检查。

弃用的功能很可能在版本 6 中被移除。

版本 消息 状态 助手

5.0

ResultSummary.ServerInfo — ResultSummary.server.version 已被移除。请改用 ResultSummary.server.agentResultSummary.server.protocolVersion,或调用 dbms.components Cypher 过程。

已移除

5.0

RxJS 已升级到 7.5.5。
concat 已被 concatWith 取代,flatMap 已被 mergeMap 取代。

已变更

5.0

Session — 方法 .readTransaction().writeTransaction() 已弃用,推荐使用 .executeRead().executeWrite()。通过新方法,事务函数的第一个参数是一个 ManagedTransaction 对象。它的行为类似于常规的 Transaction 对象,但它不提供 .commit().rollback().close().closed() 方法。

已弃用

5.0

Session — 方法 .lastBookmark() 已弃用,推荐使用 .lastBookmarks()

已弃用

5.0

Node, Relationship — 属性 .identity (NumberOrInteger) 已弃用,推荐使用 .elementId (String)。

已弃用

5.0

Relationship — 属性 .start.end 已弃用,推荐使用 .startNodeElementId.endNodeElementId。旧标识符是 NumberOrInteger,而新 ElementId 是 string

已弃用

5.0

Driver — .verifyConnectivity() 的返回值已弃用。该方法仍然存在,但返回 void。要检索服务器信息,请使用 .getServerInfo()

已弃用

5.7

Notification — 属性 .severity 已弃用。对于原始值,请使用 .rawSeverityLevel;对于枚举值,请使用 .severityLevel

已弃用

5.27

ResultSummary — 属性 .notifications 已弃用,推荐使用 .gqlStatusObjects。替代项包含符合 GQL 规范的状态 (GqlStatusObject),它们是旧通知的超集。

已弃用

© . All rights reserved.