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

isPoint(obj: object): boolean

Test if given object is an instance of Point class.

public

isTime(obj: object): boolean

Test if given object is an instance of Time class.

public

newError(message: *, code: string): *

Static Public

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

import {driver} from 'neo4j-driver/lib/v1/index.js'

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_ALL_CERTIFICATES is the default choice for NodeJS deployments. It only requires
  // new host to provide a certificate and does no verification of the provided certificate.
  //
  // TRUST_ON_FIRST_USE is available for modern NodeJS deployments, and works
  // similarly to how `ssl` works - the first time we connect to a new host,
  // we remember the certificate they use. If the certificate ever changes, we
  // assume it is an attempt to hijack the connection and require manual intervention.
  // This means that by default, connections "just work" while still giving you
  // good encrypted protection.
  //
  // TRUST_CUSTOM_CA_SIGNED_CERTIFICATES is the classic approach to 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 listed
  // as trusted. In the web bundle, this list of trusted certificates is maintained
  // by the web browser. In NodeJS, you configure the list with the next config option.
  //
  // TRUST_SYSTEM_CA_SIGNED_CERTIFICATES means that you trust whatever certificates
  // are in the default certificate chain of th
  trust: "TRUST_ALL_CERTIFICATES" | "TRUST_ON_FIRST_USE" | "TRUST_SIGNED_CERTIFICATES" |
  "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES" | "TRUST_SYSTEM_CA_SIGNED_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: [],

  // Path to a file where the driver saves hosts it has seen in the past, this is
  // very similar to the ssl tool's known_hosts file. Each time we connect to a
  // new host, a hash of their certificate is stored along with the domain name and
  // port, and this is then used to verify the host certificate does not change.
  // This setting has no effect unless TRUST_ON_FIRST_USE is enabled.
  knownHosts:"~/.neo4j/known_hosts",

  // The max number of connections that are allowed idle in the pool at any time.
  // Connection will be destroyed if this threshold is exceeded.
  // **Deprecated:** please use `maxConnectionPoolSize` instead.
  connectionPoolSize: 100,

  // 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

  // Provide an alternative load balancing strategy for the routing driver to use.
  // Driver uses "least_connected" by default.
  // **Note:** We are experimenting with different strategies. This could be removed in the next minor
  // version.
  loadBalancingStrategy: "least_connected" | "round_robin",

  // 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 5000, which is 5 seconds.
  connectionTimeout: 5000, // 5 seconds

  // Make this driver always return native JavaScript numbers for integer values, instead of the
  // dedicated <span><a href="class/src/v1/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,

  // 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'];
  },
}

Params:

NameTypeAttributeDescription
url string

The URL for the Neo4j database, for instance "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/lib/v1/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/lib/v1/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/lib/v1/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/lib/v1/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 isPoint(obj: object): boolean source

import {isPoint} from 'neo4j-driver/lib/v1/spatial-types.js'

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 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 newError(message: *, code: string): * source

import {newError} from 'neo4j-driver/lib/v1/error.js'

Params:

NameTypeAttributeDescription
message *
code string
  • optional
  • default: N/A

Return:

*