1

我正在使用 NodeJS 和neo4j-driver包。在服务器启动时,我需要确保我的 neo4j 集群中存在特定的数据库。因此我实现了这个方法:

export const ensureAdminDatabaseExists = async () => {
  const session = neo4j
    .driver(
      NEO4J_CONNECTION_URL,
      neo4j.auth.basic(NEO4J_USERNAME, NEO4J_PASSWORD)
    )
    .session();
  await session.writeTransaction((tx) =>
    tx.run('CREATE DATABASE $dbName IF NOT EXISTS', { dbName: 'admin' })
  );
  await session.close();
};

如果 Neo4j 中不存在这样的数据库并且我多次并行调用此方法,则至少有一个事务将失败并显示以下错误消息:

Neo4jError: Failed to create the specified database 'admin': Database already exists.

但是,如果数据库在启动时存在,则没有事务失败。因此,我质疑CREATE DATABASE查询是否是事务性的。

4

0 回答 0