2016-06-28 4 views
3

Ich finde Neo4j3.0 Schraube Neo4j-Treiber-Syntax sehr herausfordernd. Mein Sitzungscode wird einfach nicht ausgeführt, anscheinend wird er übersprungen. Ich habe einen kleinen Testcode mit dem Beispiel aus dem Entwicklerhandbuch erstellt und überrascht, dass es das Gleiche gemacht hat. Ich habe den Knoten-Inspektor benutzt, um den Code zu betrachten, und natürlich hat er einfach den Block "Sitzung" übersprungen. offensichtlich mache ich etwas falsch ... kann mir jemand sagen was es ist ?? ... der code steht unten: ..... der code druckte erst die erste console.log dann quittieren.neo4j-Treiber-Sitzung nicht ausgeführt

var neo4j = require('neo4j-driver').v1; 

var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "allin4k")); 
var session = driver.session(); 
console.log("start session"); 
session 
    .run("CREATE (a:Person {name:'Arthur', title:'King'})") 
    .then(function() 
    { 
    console.log("return from second session") 
    return session.run("MATCH (a:Person) WHERE a.name = 'Arthur' RETURN a.name AS name, a.title AS title") 

    }) 

    .then(function(result) { 
    console.log(result.records[0].get("title") + " " + result.records[0].get("name")); 
    session.close(); 
    driver.close(); 
    }) 

Antwort

1

Nicht wirklich sicher, was Sie erwarten.

Mit den Ergebnissen der Sitzung führen Sie eine zweite Anweisung in der gleichen Sitzung, während Sie es gleichzeitig schließen?

Ihr zweite then beim zweiten Aufruf sein sollte:

var neo4j = require('neo4j-driver').v1; 

var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "allin4k")); 
var session = driver.session(); 
console.log("start session"); 
session 
    .run("CREATE (a:Person {name:'Arthur', title:'King'})") 
    .then(function() 
    { 
    console.log("return from second session") 
    session.run("MATCH (a:Person) WHERE a.name = 'Arthur' RETURN a.name AS name, a.title AS title").then(function(result) { 
     console.log(result.records[0].get("title") + " " + result.records[0].get("name")); 
     session.close(); 
     driver.close(); 
    }) 

    }) 
+0

... Da ich dieses Codebeispiel aus dem neo4j3.0 Entwickler Handbuch kam angegeben. Meine weitere Forschung zeigt auf ein Problem mit der verschachtelten Sitzung (die zweite), die mit einer neueren Frage in Verbindung gebracht werden könnte. "Neo4j BOLT-Abfrage funktioniert nicht immer konsistent". – MichaelE

+0

Was passiert, ist eine Verzögerung bei der Erstellung des Knotens, während der Code weiterhin ausgeführt wird. Der Code ist immer komplett, außer für die zweite Sitzung und wenn ich die Datenbank überprüfe, wird der Knoten erstellt. Wenn ich eine Browserverbindung geöffnet hätte, würden die Knoten erst erscheinen, nachdem ich die Verbindung getrennt und wieder hergestellt habe ..... könnte das auch aufgrund von nodejs .... kannst du noch mehr Licht auf dieses Verhalten werfen .... danke – MichaelE