@@ -405,6 +405,73 @@ describe('#integration examples', () => {
405
405
expect ( await consoleLoggedMsg ) . toEqual ( personName )
406
406
} )
407
407
408
+ it ( 'driver introduction example' , async ( ) => {
409
+ const console = consoleOverride
410
+ const consoleLoggedMsg = consoleOverridePromise
411
+
412
+ // tag::driver-introduction-example-imports[]
413
+ const neo4j = require ( 'neo4j-driver' )
414
+ // end::driver-introduction-example-imports[]
415
+
416
+ // tag::driver-introduction-example-variables[]
417
+ /*
418
+ const uri = '%%BOLT_URL_PLACEHOLDER%%';
419
+ const user = '<Username for Neo4j Aura database>';
420
+ const password = '<Password for Neo4j Aura database>';
421
+ */
422
+ // end::driver-introduction-example-variables[]
423
+
424
+ // tag::driver-introduction-example[]
425
+ const driver = neo4j . driver ( uri , neo4j . auth . basic ( user , password ) )
426
+ const session = driver . session ( )
427
+
428
+ const person1Name = 'Alice'
429
+ const person2Name = 'David'
430
+
431
+ try {
432
+ // To learn more about the Cypher syntax, see https://neo4j.com/docs/cypher-manual/current/
433
+ // The Reference Card is also a good resource for keywords https://neo4j.com/docs/cypher-refcard/current/
434
+ const writeQuery = `MERGE (p1:Person { name: $person1Name })
435
+ MERGE (p2:Person { name: $person2Name })
436
+ MERGE (p1)-[:KNOWS]->(p2)
437
+ RETURN p1, p2`
438
+
439
+ // Write transactions allow the driver to handle retries and transient errors
440
+ const writeResult = await session . writeTransaction ( tx =>
441
+ tx . run ( writeQuery , { person1Name, person2Name } )
442
+ )
443
+ writeResult . records . forEach ( record => {
444
+ const person1Node = record . get ( 'p1' )
445
+ const person2Node = record . get ( 'p2' )
446
+ console . log (
447
+ `Created friendship between: ${ person1Node . properties . name } , ${ person2Node . properties . name } `
448
+ )
449
+ } )
450
+
451
+ const readQuery = `MATCH (p:Person)
452
+ WHERE p.name = $personName
453
+ RETURN p.name AS name`
454
+ const readResult = await session . readTransaction ( tx =>
455
+ tx . run ( readQuery , { personName : person1Name } )
456
+ )
457
+ readResult . records . forEach ( record => {
458
+ console . log ( `Found person: ${ record . get ( 'name' ) } ` )
459
+ } )
460
+ } catch ( error ) {
461
+ console . error ( 'Something went wrong: ' , error )
462
+ } finally {
463
+ await session . close ( )
464
+ }
465
+
466
+ // Don't forget to close the driver connection when you're finished with it
467
+ await driver . close ( )
468
+ // end::driver-introduction-example[]
469
+
470
+ expect ( await consoleLoggedMsg ) . toEqual (
471
+ `Created friendship between: ${ person1Name } , ${ person2Name } `
472
+ )
473
+ } )
474
+
408
475
it ( 'read write transaction example' , async ( ) => {
409
476
const console = consoleOverride
410
477
const consoleLoggedMsg = consoleOverridePromise
0 commit comments