neo4j-javascript-driver icon indicating copy to clipboard operation
neo4j-javascript-driver copied to clipboard

Introduce API Redesign

Open bigmontz opened this issue 3 years ago • 2 comments

bigmontz avatar Jul 18 '22 16:07 bigmontz

Usage sample:

import neo4j from 'neo4j-driver'

const driver = neo4j.driver(
  'neo4j://localhost',
  neo4j.auth.basic('neo4j', 'pass')
)

console.log('Running query direct from the driver')
const { records, summary } = await driver.query('RETURN $n as n', { n: 1 }, { database: 'neo4j', clusterMemberAccess: 'READERS' })
console.log(`ns: ${records.map(r => r.get('n'))}`)
console.log(`Result available after: ${summary.resultAvailableAfter}`)

console.log('Executing job directly from the driver')
const { ns, resultAvailableAfter } = await driver.execute(async tx => { 
  const { records, summary} = await tx.query('RETURN $n as n', { n: 2 })
  return { ns: records.map(r => r.get('n')), resultAvailableAfter: summary.resultAvailableAfter }
}, { database: 'neo4j', clusterMemberAccess: 'READERS'})
console.log(`ns ${ns}`)
console.log(`Result available after: ${resultAvailableAfter}`)


console.log('=== Session === ')
const session = driver.session({ database: 'neo4j' })

console.log('Running a query from session')
const { records: sRecords, summary: sSummary } = await session.query('RETURN $n as n', { n: 3 }, { clusterMemberAccess: 'READERS' })
console.log(`ns: ${sRecords.map(r => r.get('n'))}`)
console.log(`Result available after: ${sSummary.resultAvailableAfter}`)


console.log('Executing job directly from the query')
const { sNs, sResultAvailableAfter } = await driver.execute(async tx => { 
  const { records, summary} = await tx.query('RETURN $n as n', { n: 4 })
  return { sNs: records.map(r => r.get('n')), sResultAvailableAfter: summary.resultAvailableAfter }
}, { database: 'neo4j', clusterMemberAccess: 'READERS'})
console.log(`ns ${sNs}`)
console.log(`Result available after: ${sResultAvailableAfter}`)

await session.close()
await driver.close()

bigmontz avatar Jul 19 '22 14:07 bigmontz

Usage example without define db and cluster access:

import neo4j from 'neo4j-driver'

const driver = neo4j.driver(
  'bolt://localhost',
  neo4j.auth.basic('neo4j', 'pass')
)

console.log('Running query direct from the driver')

const { records, summary } = await driver.query('RETURN $n as n', { n: 1 })

console.log(`ns: ${records.map(r => r.get('n'))}`)
console.log(`Result available after: ${summary.resultAvailableAfter}`)

console.log('Executing job directly from the driver')

const { ns, resultAvailableAfter } = await driver.execute(async tx => { 
  const { records, summary} = await tx.query('RETURN $n as n', { n: 2 })
  return { ns: records.map(r => r.get('n')), resultAvailableAfter: summary.resultAvailableAfter }
})

console.log(`ns ${ns}`)
console.log(`Result available after: ${resultAvailableAfter}`)


console.log('=== Session === ')
const session = driver.session({ database: 'neo4j' })

console.log('Running a query from session')

const { records: sRecords, summary: sSummary } = await session.query('RETURN $n as n', { n: 3 })

console.log(`ns: ${sRecords.map(r => r.get('n'))}`)
console.log(`Result available after: ${sSummary.resultAvailableAfter}`)


console.log('Executing job directly from the query')

const { sNs, sResultAvailableAfter } = await driver.execute(async tx => { 
  const { records, summary} = await tx.query('RETURN $n as n', { n: 4 })
  return { sNs: records.map(r => r.get('n')), sResultAvailableAfter: summary.resultAvailableAfter }
})

console.log(`ns ${sNs}`)
console.log(`Result available after: ${sResultAvailableAfter}`)

await session.close()
await driver.close()

bigmontz avatar Jul 19 '22 15:07 bigmontz