Home Reference Source

Function

Static Public Summary
public

driver(url: string, authToken: Map<string, string>, config: Object): Driver

Construct a new Neo4j Driver.

public

isDate(obj: Object): boolean

Test if given object is an instance of Date class.

public

isDateTime(obj: Object): boolean

Test if given object is an instance of DateTime class.

public

isDuration(obj: Object): boolean

Test if given object is an instance of Duration class.

public

isLocalDateTime(obj: Object): boolean

Test if given object is an instance of LocalDateTime class.

public

isLocalTime(obj: Object): boolean

Test if given object is an instance of LocalTime class.

public

isNode(obj: Object): boolean

Test if given object is an instance of Node class.

public

isPath(obj: Object): boolean

Test if given object is an instance of Path class.

public

isPathSegment(obj: Object): boolean

Test if given object is an instance of PathSegment class.

public

isPoint(obj: Object): boolean

Test if given object is an instance of Point class.

public

isRelationship(obj: Object): boolean

Test if given object is an instance of Relationship class.

public

isTime(obj: Object): boolean

Test if given object is an instance of Time class.

public

isUnboundRelationship(obj: Object): boolean

Test if given object is an instance of UnboundRelationship class.

Static Public

public driver(url: string, authToken: Map<string, string>, config: Object): Driver source

import {driver} from 'neo4j-driver'

Construct a new Neo4j Driver. This is your main entry point for this library.

Configuration

This function optionally takes a configuration argument. Available configuration options are as follows:

{
  // Encryption level: ENCRYPTION_ON or ENCRYPTION_OFF.
  encrypted: ENCRYPTION_ON|ENCRYPTION_OFF

  // Trust strategy to use if encryption is enabled. There is no mode to disable
  // trust other than disabling encryption altogether. The reason for
  // this is that if you don't know who you are talking to, it is easy for an
  // attacker to hijack your encrypted connection, rendering encryption pointless.
  //
  // TRUST_SYSTEM_CA_SIGNED_CERTIFICATES is the default choice. For NodeJS environments, this
  // means that you trust whatever certificates are in the default trusted certificate
  // store of the underlying system. For Browser environments, the trusted certificate
  // store is usually managed by the browser. Refer to your system or browser documentation
  // if you want to explicitly add a certificate as trusted.
  //
  // TRUST_CUSTOM_CA_SIGNED_CERTIFICATES is another option for trust verification -
  // whenever we establish an encrypted connection, we ensure the host is using
  // an encryption certificate that is in, or is signed by, a certificate given
  // as trusted through configuration. This option is only available for NodeJS environments.
  //
  // TRUST_ALL_CERTIFICATES means that you trust everything without any verifications
  // steps carried out.  This option is only available for NodeJS environments and should not
  // be used on production systems.
  trust: "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES" | "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES" |
  "TRUST_ALL_CERTIFICATES",

  // List of one or more paths to trusted encryption certificates. This only
  // works in the NodeJS bundle, and only matters if you use "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES".
  // The certificate files should be in regular X.509 PEM format.
  // For instance, ['./trusted.pem']
  trustedCertificates: [],

  // The maximum total number of connections allowed to be managed by the connection pool, per host.
  // This includes both in-use and idle connections. No maximum connection pool size is imposed
  // by default.
  maxConnectionPoolSize: 100,

  // The maximum allowed lifetime for a pooled connection in milliseconds. Pooled connections older than this
  // threshold will be closed and removed from the pool. Such discarding happens during connection acquisition
  // so that new session is never backed by an old connection. Setting this option to a low value will cause
  // a high connection churn and might result in a performance hit. It is recommended to set maximum lifetime
  // to a slightly smaller value than the one configured in network equipment (load balancer, proxy, firewall,
  // etc. can also limit maximum connection lifetime). No maximum lifetime limit is imposed by default. Zero
  // and negative values result in lifetime not being checked.
  maxConnectionLifetime: 60 * 60 * 1000, // 1 hour

  // The maximum amount of time to wait to acquire a connection from the pool (to either create a new
  // connection or borrow an existing one.
  connectionAcquisitionTimeout: 60000, // 1 minute

  // Specify the maximum time in milliseconds transactions are allowed to retry via
  // `Session#readTransaction()` and `Session#writeTransaction()` functions.
  // These functions will retry the given unit of work on `ServiceUnavailable`, `SessionExpired` and transient
  // errors with exponential backoff using initial delay of 1 second.
  // Default value is 30000 which is 30 seconds.
  maxTransactionRetryTime: 30000, // 30 seconds

  // Specify socket connection timeout in milliseconds. Numeric values are expected. Negative and zero values
  // result in no timeout being applied. Connection establishment will be then bound by the timeout configured
  // on the operating system level. Default value is 30000, which is 30 seconds.
  connectionTimeout: 30000, // 30 seconds

  // Make this driver always return native JavaScript numbers for integer values, instead of the
  // dedicated <span><a href="class/lib6/integer.js~Integer.html">Integer</a></span> class. Values that do not fit in native number bit range will be represented as
  // `Number.NEGATIVE_INFINITY` or `Number.POSITIVE_INFINITY`.
  // **Warning:** ResultSummary It is not always safe to enable this setting when JavaScript applications are not the only ones
  // interacting with the database. Stored numbers might in such case be not representable by native
  // <span>Number</span> type and thus driver will return lossy values. This might also happen when data was
  // initially imported using neo4j import tool and contained numbers larger than
  // `Number.MAX_SAFE_INTEGER`. Driver will then return positive infinity, which is lossy.
  // Default value for this option is `false` because native JavaScript numbers might result
  // in loss of precision in the general case.
  disableLosslessIntegers: false,

  // Make this driver always return native Javascript <span>BigInt</span> for integer values, instead of the dedicated <span><a href="class/lib6/integer.js~Integer.html">Integer</a></span> class or <span>Number</span>.
  //
  // Default value for this option is `false` for backwards compatibility.
  //
  // **Warning:** `BigInt` doesn't implement the method `toJSON`. In maner of serialize it as `json`, It's needed to add a custom implementation of the `toJSON` on the
  // `BigInt.prototype` {@see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#use_within_json}
  useBigInt: false,

  // Specify the logging configuration for the driver. Object should have two properties `level` and `logger`.
  //
  // Property `level` represents the logging level which should be one of: 'error', 'warn', 'info' or 'debug'. This property is optional and
  // its default value is 'info'. Levels have priorities: 'error': 0, 'warn': 1, 'info': 2, 'debug': 3. Enabling a certain level also enables all
  // levels with lower priority. For example: 'error', 'warn' and 'info' will be logged when 'info' level is configured.
  //
  // Property `logger` represents the logging function which will be invoked for every log call with an acceptable level. The function should
  // take two string arguments `level` and `message`. The function should not execute any blocking or long-running operations
  // because it is often executed on a hot path.
  //
  // No logging is done by default. See `neo4j.logging` object that contains predefined logging implementations.
  logging: {
    level: 'info',
    logger: (level, message) => console.log(level + ' ' + message)
  },

  // Specify a custom server address resolver function used by the routing driver to resolve the initial address used to create the driver.
  // Such resolution happens:
  //  * during the very first rediscovery when driver is created
  //  * when all the known routers from the current routing table have failed and driver needs to fallback to the initial address
  //
  // In NodeJS environment driver defaults to performing a DNS resolution of the initial address using 'dns' module.
  // In browser environment driver uses the initial address as-is.
  // Value should be a function that takes a single string argument - the initial address. It should return an array of new addresses.
  // Address is a string of shape '<host>:<port>'. Provided function can return either a Promise resolved with an array of addresses
  // or array of addresses directly.
  resolver: function(address) {
    return ['127.0.0.1:8888', 'fallback.db.com:7687'];
  },

 // Optionally override the default user agent name.
  userAgent: USER_AGENT
}

Params:

NameTypeAttributeDescription
url string

The URL for the Neo4j database, for instance "neo4j://localhost" and/or "bolt://localhost"

authToken Map<string, string>

Authentication credentials. See auth for helpers.

config Object

Configuration object. See the configuration section above for details.

Return:

Driver

public isDate(obj: Object): boolean source

Test if given object is an instance of Date class.

Params:

NameTypeAttributeDescription
obj Object

The object to test.

Return:

boolean

true if given object is a Date, false otherwise.

public isDateTime(obj: Object): boolean source

import {isDateTime} from 'neo4j-driver-core/lib/temporal-types.js'

Test if given object is an instance of DateTime class.

Params:

NameTypeAttributeDescription
obj Object

The object to test.

Return:

boolean

true if given object is a DateTime, false otherwise.

public isDuration(obj: Object): boolean source

import {isDuration} from 'neo4j-driver-core/lib/temporal-types.js'

Test if given object is an instance of Duration class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a Duration, false otherwise.

public isLocalDateTime(obj: Object): boolean source

import {isLocalDateTime} from 'neo4j-driver-core/lib/temporal-types.js'

Test if given object is an instance of LocalDateTime class.

Params:

NameTypeAttributeDescription
obj Object

The object to test.

Return:

boolean

true if given object is a LocalDateTime, false otherwise.

public isLocalTime(obj: Object): boolean source

import {isLocalTime} from 'neo4j-driver-core/lib/temporal-types.js'

Test if given object is an instance of LocalTime class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a LocalTime, false otherwise.

public isNode(obj: Object): boolean source

Test if given object is an instance of Node class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a Node, false otherwise.

public isPath(obj: Object): boolean source

Test if given object is an instance of Path class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a Path, false otherwise.

public isPathSegment(obj: Object): boolean source

import {isPathSegment} from 'neo4j-driver-core/lib/graph-types.js'

Test if given object is an instance of PathSegment class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a PathSegment, false otherwise.

public isPoint(obj: Object): boolean source

Test if given object is an instance of Point class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a Point, false otherwise.

public isRelationship(obj: Object): boolean source

import {isRelationship} from 'neo4j-driver-core/lib/graph-types.js'

Test if given object is an instance of Relationship class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a Relationship, false otherwise.

public isTime(obj: Object): boolean source

Test if given object is an instance of Time class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a Time, false otherwise.

public isUnboundRelationship(obj: Object): boolean source

import {isUnboundRelationship} from 'neo4j-driver-core/lib/graph-types.js'

Test if given object is an instance of UnboundRelationship class.

Params:

NameTypeAttributeDescription
obj Object

the object to test.

Return:

boolean

true if given object is a UnboundRelationship, false otherwise.