Как подключиться к GrapheneDb с помощью graphaware / neo4j- php -client? - PullRequest
0 голосов
/ 07 августа 2020

Я прочитал инструкции на https://github.com/graphaware/neo4j-php-client#installation -and-basi c -usage и https://docs.graphenedb.com/docs/php

Хотя этот пример из GrapheneDb документы работают, он не использует GraphAware Neo4j PHP Client, он использует Neo4j Bolt PHP:

// Example for Bolt
$config = \GraphAware\Bolt\Configuration::newInstance()
->withCredentials('user', 'pass')
->withTimeout(10)
->withTLSMode(\GraphAware\Bolt\Configuration::TLSMODE_REQUIRED);

$driver = \GraphAware\Bolt\GraphDatabase::driver('bolt://hobby-my-graph-db.dbs.graphenedb.com:24786', $config);
$client = $driver->session();

Я нигде не могу найти рабочий пример, я перепробовал все виды вещей; Я дважды и трижды проверил строки подключения, я пробовал http, а также bolt, я вошел в базу данных из браузера neo4j, поэтому я знаю, что учетные данные должны быть в порядке.

Вот как выглядит мой код :

/* GraphAware\Bolt\Configuration */
$config = Configuration::create()
->withCredentials('user', 'pass')
->withTimeout(10)
->withTLSMode(Configuration::TLSMODE_REQUIRED);    
        
/* GraphAware\Neo4j\Client\ClientBuilder */
$client = ClientBuilder::create()
->addConnection('bolt', 'bolt://hobby-my-graph-db.dbs.graphenedb.com:24787', $config)
->build();
    
$result = $client->run("CREATE (n:Person {name: 'Bob'}) RETURN id(n)");

Когда я пытаюсь выполнить запрос, я получаю:

Exception 'GraphAware\Bolt\Exception\HandshakeException' with message 'Error receiving data'
in /path-to-project/vendor/graphaware/neo4j-bolt/src/Driver.php:165

Есть ли у кого-нибудь полный рабочий пример подключения к GrapheneDb с использованием graphaware / neo4j- php -client?

1 Ответ

0 голосов
/ 07 августа 2020

Болт-драйвер: по какой-то причине GraphAware\Neo4j\Client\Connection\Connection.php не использует конфигурацию, которую вы передаете методу GraphAware\Neo4j\Client\ClientBuilder->addConnection() (???). Он перестраивает конфигурацию, исключая все, кроме имени пользователя и пароля. Итак, если ваше соединение требует режима TLS, как у меня, оно никогда не будет работать без изменения источника.

В GraphAware\Neo4j\Client\Connection\Connection.php:180 внутри метода buildDriver() я просто использую конфигурацию, которую я передал, вместо этого $this->config того, который они восстанавливают для вас. Работает как надо.

После переделки выглядит так: $this->driver = BoltGraphDB::driver($uri, $this->config);

(graphaware / neo4j- php -client 4.8.5)

...