驱动如何在没有环境变量的情况下设置neo4j连接信息

drivine how to set neo4j connection info without environment variables

在drivine neo4j驱动中,如何在不设置环境变量的情况下通过代码设置应用程序连接到指定的数据库。

动态注册新连接:

确保首先调用了以下代码:

DatabaseRegistry.getInstance().builder()
        .withType(DatabaseType.NEO4J)
        .host(host)
        .userName(userName)
        .password(password)
        .databaseName(dbName) // On Neo4j version 4 we can have multiple DBs
        .port(nonStandardPortIfNeeded)
        .register('MY_UNIQUE_NAME');

注意: 不用 DatabaseRegistry 作为单例,你当然也可以 @Inject() 它。

上面的代码可以放在下面的构造函数的主体中,或者任何地方,只要在从工厂获取持久性管理器之前调用它即可。

从工厂获取持久性管理器:

注册数据库后,您可以获得该数据库的持久性管理器,如下所示:

@Injectable()
export class PersonRepository {

    readonly persistenceManager: PersistenceManager;

    constructor(@Inject() readonly factory: PersistenceManagerFactory) {
    }

    async someOperation(): Promise<void> {
        const persistenceManager = this.factory.get('MY_UNIQUE_NAME')
        //Now use persistence manager 
    }

}

详情:

  • 在第一种情况下,我们使用 DatabaseRegistry 的构建器来构建或解析具有指定属性的命名 ConnectionProvider
  • 在第二种情况下,我们使用 PersistenceManagerFactory 获取命名连接详细信息的 PersistenceManager。连接提供程序负责以最方便的方式为该数据库返回连接(可能根据平台合并)。

就是这样。顺便说一下,Drivine 也适用于其他图形数据库。