我正在使用 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
查询是否是事务性的。