Neo4j - passing string parameters through JavaScript driver doesn't work

I am during the process of rewriting queries with already injected values to passing query and params object.

Queries which use ints work fine (I need to use neo4j's int translation):

LIMIT $fetchLimit
import { int } from 'neo4j-driver'
params = {
  nodeId: int(nodeId)
  fetchLimit: int(fetchLimit)

In some queries I am searching for strings and I am not using "normal" string search

WHERE$value       <-- "normal" search
WHERE"$value.*"  <-- my search

Passing parameters doesn't work in this case.

I have a feeling that when I pass value: 'foo', neo4j resolves it as below:

value: 'foo'

*(injects parameters)*

WHERE"'foo'.*"   <-- these inner quotation marks shouldn't be there

How to pass strings to this query and expect proper results?

(note that I am sure that query is written properly because when I directly inject parameters to query using JS's ${value}

1 answer

  • answered 2022-01-18 13:16 Brakebein

    You can merge two strings with +. The regular expression after =~ is just a string.

    So, working Cypher would be:

    WHERE =~ $value + ".*"

    Alternatively, you could assemble the expression string in JavaScript:

    search = 'foo'
    params = {
      value: `${search}.*`
    WHERE =~ $value

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum