连接

一旦您安装了驱动程序运行了 Neo4j 实例,您就可以准备好将应用程序连接到数据库。

连接到数据库

您可以通过创建 Driver 对象并提供 URL 和身份验证令牌来连接到数据库。

(async () => {
  var neo4j = require('neo4j-driver')

  // URI examples: 'neo4j://localhost', 'neo4j+s://xxx.databases.neo4j.io'
  const URI = '<URI for Neo4j database>'
  const USER = '<Username>'
  const PASSWORD = '<Password>'
  let driver

  try {
    driver = neo4j.driver(URI,  neo4j.auth.basic(USER, PASSWORD))  (1)
    const serverInfo = await driver.getServerInfo()  (2)
    console.log('Connection established')
    console.log(serverInfo)
  } catch(err) {
    console.log(`Connection error\n${err}\nCause: ${err.cause}`)
    await driver.close()
    return
  }

  // Use the driver to run queries

  await driver.close()  (3)
})();
1 创建 Driver 实例仅提供有关如何访问数据库的信息,但不会真正建立连接。连接是在执行第一个查询时延迟的。
2 要立即验证驱动程序是否可以连接到数据库(有效凭据、兼容版本等),请在初始化驱动程序后使用 .getServerInfo() 方法。
3 始终关闭 Driver 对象以释放所有分配的资源,即使在连接失败或后续查询中出现运行时错误时也是如此。

Driver 对象的创建和连接验证都可能引发异常,因此错误捕获应包括两者。

Driver 对象是不可变的、线程安全的,并且创建成本很高,因此您的应用程序应该只创建一个实例并将其传递(您可以在线程之间共享 Driver 实例)。如果您需要通过多个不同的用户查询数据库,请使用模拟,而无需创建新的 Driver 实例。如果您想更改 Driver 配置,则需要创建一个新对象。

连接到 Aura 实例

当您创建一个 Aura 实例时,您可以下载一个文本文件(称为Dotenv 文件),其中包含以环境变量形式连接到数据库的连接信息。该文件的文件名格式为 Neo4j-a0a2fa1d-Created-2023-11-06.txt

您可以手动从该文件中提取 URI 和凭据,也可以使用第三方模块来加载它们。我们建议使用模块 dotenv-java 来执行此操作。

(async () => {
  var neo4j = require('neo4j-driver')
  require('dotenv').config({
    path: 'Neo4j-a0a2fa1d-Created-2023-11-06.txt',
    debug: true  // to raise file/parsing errors
  })

  const URI = process.env.NEO4J_URI
  const USER = process.env.NEO4J_USERNAME
  const PASSWORD = process.env.NEO4J_PASSWORD
  let driver

  try {
    driver = neo4j.driver(URI,  neo4j.auth.basic(USER, PASSWORD))
    const serverInfo = await driver.getServerInfo()
    console.log('Connection established')
    console.log(serverInfo)
  } catch(err) {
    console.log(`Connection error\n${err}\nCause: ${err.cause}`)
    await driver.close()
    return
  }

  // Use the driver to run queries

  await driver.close()
})();
Aura 实例在概念上与任何其他 Neo4j 实例没有区别,因为 Aura 只是 Neo4j 的一种部署模式。当通过驱动程序与 Neo4j 数据库交互时,它与 Aura 实例或其他部署无关。

关闭连接

始终通过 Driver.close() 关闭 Driver 对象以释放所有分配的资源,即使在连接失败或出现运行时错误时也是如此。

更多连接参数

有关更多 Driver 配置参数和进一步连接设置,请参阅高级连接信息.

词汇表

LTS

长期支持版本是指保证支持多年的版本。Neo4j 4.4 是 LTS,Neo4j 5 也将有一个 LTS 版本。

Aura

Aura 是 Neo4j 的完全托管云服务。它提供免费和付费计划。

Cypher

Cypher 是 Neo4j 的图查询语言,它允许您从数据库中检索数据。它类似于 SQL,但适用于图。

APOC

Cypher 上的强大过程 (APOC) 是一个库,其中包含许多(许多)函数,这些函数不能轻易在 Cypher 本身中表达。

Bolt

Bolt 是用于 Neo4j 实例和驱动程序之间交互的协议。默认情况下,它监听端口 7687。

ACID

原子性、一致性、隔离性、持久性 (ACID) 是保证数据库事务可靠处理的属性。符合 ACID 的 DBMS 确保数据库中的数据即使在出现故障的情况下也能保持准确和一致。

最终一致性

如果数据库提供保证,即所有集群成员在某个时间点都会存储数据的最新版本,则该数据库最终是一致的。

因果一致性

如果数据库保证每个集群成员以相同的顺序看到读写查询,则该数据库因果一致。这比最终一致性更强大。

NULL

空标记不是类型,而是值不存在的占位符。有关更多信息,请参阅Cypher → 使用 null.

事务

事务是一个工作单元,要么全部提交,要么在发生故障时回滚。例如,银行转账:它涉及多个步骤,但这些步骤必须全部成功或被还原,以避免从一个账户中扣款而没有添加到另一个账户中。

背压

背压是阻止数据流动的力量。它确保客户端不会被超出其处理能力的数据量所淹没。

事务函数

事务函数是 executeReadexecuteWrite 调用执行的回调。如果服务器发生故障,驱动程序会自动重新执行回调。

Driver

一个Driver 对象包含建立与 Neo4j 数据库连接所需的详细信息。